﻿2026-06-23T10:05:46.7464046Z ##[group]Run ./traceable-reqs check --json
2026-06-23T10:05:46.7464376Z [36;1m./traceable-reqs check --json[0m
2026-06-23T10:05:46.7476943Z shell: /usr/bin/bash -e {0}
2026-06-23T10:05:46.7477166Z ##[endgroup]
2026-06-23T10:05:46.8293295Z {
2026-06-23T10:05:46.8294129Z   "schemaVersion": 1,
2026-06-23T10:05:46.8294550Z   "summary": {
2026-06-23T10:05:46.8294825Z     "requirementCount": 293,
2026-06-23T10:05:46.8295087Z     "completeCount": 293,
2026-06-23T10:05:46.8295344Z     "incompleteCount": 0,
2026-06-23T10:05:46.8295673Z     "findingCount": 0
2026-06-23T10:05:46.8295997Z   },
2026-06-23T10:05:46.8296305Z   "requirements": [
2026-06-23T10:05:46.8297019Z     {
2026-06-23T10:05:46.8297417Z       "id": "REQ-ADAPTER-GH-TRANSPORT",
2026-06-23T10:05:46.8300805Z       "title": "The `gh_release` avenue (and `spt adapter add --release`) gain a fetch `transport`: `https` (current reqwest direct, public), `gh` (shell the pre-authorized `gh` CLI — the private-repo path; `gh` honors OAuth and `GH_TOKEN`, so spt custodies no token), or `auto` (default: prefer `gh` when installed+authed, else HTTPS). `--gh`/`--https` force it on `add`. Additive over the existing fetch path; verify->extract->register downstream is unchanged. (v0.13.2)",
2026-06-23T10:05:46.8303482Z       "requiredStages": [
2026-06-23T10:05:46.8303864Z         "doc",
2026-06-23T10:05:46.8304191Z         "impl",
2026-06-23T10:05:46.8304508Z         "unit"
2026-06-23T10:05:46.8304819Z       ],
2026-06-23T10:05:46.8305129Z       "stages": {
2026-06-23T10:05:46.8305443Z         "doc": {
2026-06-23T10:05:46.8305782Z           "complete": true,
2026-06-23T10:05:46.8306190Z           "evidence": [
2026-06-23T10:05:46.8306496Z             {
2026-06-23T10:05:46.8306766Z               "path": "CONTEXT.md",
2026-06-23T10:05:46.8307104Z               "line": 97
2026-06-23T10:05:46.8307380Z             },
2026-06-23T10:05:46.8307637Z             {
2026-06-23T10:05:46.8307903Z               "path": "docs/MANIFEST.md",
2026-06-23T10:05:46.8308257Z               "line": 316
2026-06-23T10:05:46.8308543Z             }
2026-06-23T10:05:46.8308781Z           ]
2026-06-23T10:05:46.8309110Z         },
2026-06-23T10:05:46.8309349Z         "impl": {
2026-06-23T10:05:46.8309630Z           "complete": true,
2026-06-23T10:05:46.8309950Z           "evidence": [
2026-06-23T10:05:46.8310231Z             {
2026-06-23T10:05:46.8310526Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:46.8310937Z               "line": 506
2026-06-23T10:05:46.8311218Z             },
2026-06-23T10:05:46.8311475Z             {
2026-06-23T10:05:46.8311773Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:46.8312172Z               "line": 533
2026-06-23T10:05:46.8312468Z             },
2026-06-23T10:05:46.8312725Z             {
2026-06-23T10:05:46.8312992Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8313364Z               "line": 2905
2026-06-23T10:05:46.8313669Z             },
2026-06-23T10:05:46.8313922Z             {
2026-06-23T10:05:46.8314198Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8314555Z               "line": 2927
2026-06-23T10:05:46.8314858Z             },
2026-06-23T10:05:46.8315111Z             {
2026-06-23T10:05:46.8315393Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8315750Z               "line": 2943
2026-06-23T10:05:46.8316018Z             },
2026-06-23T10:05:46.8316270Z             {
2026-06-23T10:05:46.8316556Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8316919Z               "line": 2955
2026-06-23T10:05:46.8317217Z             },
2026-06-23T10:05:46.8317477Z             {
2026-06-23T10:05:46.8317763Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8318130Z               "line": 2984
2026-06-23T10:05:46.8318416Z             },
2026-06-23T10:05:46.8318679Z             {
2026-06-23T10:05:46.8319022Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8319370Z               "line": 3218
2026-06-23T10:05:46.8319651Z             },
2026-06-23T10:05:46.8320209Z             {
2026-06-23T10:05:46.8320505Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8320872Z               "line": 6097
2026-06-23T10:05:46.8321172Z             },
2026-06-23T10:05:46.8321430Z             {
2026-06-23T10:05:46.8321711Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8322070Z               "line": 6550
2026-06-23T10:05:46.8322348Z             },
2026-06-23T10:05:46.8322575Z             {
2026-06-23T10:05:46.8322847Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8323195Z               "line": 6671
2026-06-23T10:05:46.8323634Z             },
2026-06-23T10:05:46.8323876Z             {
2026-06-23T10:05:46.8324158Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8324506Z               "line": 6732
2026-06-23T10:05:46.8324792Z             },
2026-06-23T10:05:46.8325050Z             {
2026-06-23T10:05:46.8325316Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8325667Z               "line": 6758
2026-06-23T10:05:46.8325967Z             }
2026-06-23T10:05:46.8326230Z           ]
2026-06-23T10:05:46.8326496Z         },
2026-06-23T10:05:46.8326743Z         "int": {
2026-06-23T10:05:46.8327025Z           "complete": false,
2026-06-23T10:05:46.8327349Z           "evidence": []
2026-06-23T10:05:46.8327635Z         },
2026-06-23T10:05:46.8327892Z         "unit": {
2026-06-23T10:05:46.8328157Z           "complete": true,
2026-06-23T10:05:46.8328472Z           "evidence": [
2026-06-23T10:05:46.8328782Z             {
2026-06-23T10:05:46.8329168Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8329564Z               "line": 8401
2026-06-23T10:05:46.8329868Z             },
2026-06-23T10:05:46.8330131Z             {
2026-06-23T10:05:46.8330418Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8330798Z               "line": 8419
2026-06-23T10:05:46.8331112Z             },
2026-06-23T10:05:46.8331389Z             {
2026-06-23T10:05:46.8331681Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8332057Z               "line": 8590
2026-06-23T10:05:46.8332357Z             },
2026-06-23T10:05:46.8332630Z             {
2026-06-23T10:05:46.8332913Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8333274Z               "line": 8606
2026-06-23T10:05:46.8333564Z             },
2026-06-23T10:05:46.8333840Z             {
2026-06-23T10:05:46.8334112Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8334485Z               "line": 8633
2026-06-23T10:05:46.8334770Z             },
2026-06-23T10:05:46.8335028Z             {
2026-06-23T10:05:46.8335328Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8335699Z               "line": 8660
2026-06-23T10:05:46.8335998Z             }
2026-06-23T10:05:46.8336270Z           ]
2026-06-23T10:05:46.8336537Z         }
2026-06-23T10:05:46.8336794Z       }
2026-06-23T10:05:46.8337047Z     },
2026-06-23T10:05:46.8337299Z     {
2026-06-23T10:05:46.8337595Z       "id": "REQ-ADAPTER-LIVE-UPDATE",
2026-06-23T10:05:46.8340606Z       "title": "An adapter update is live and daemon-coordinated (the adapter analog of brain self-update, ADR-0004): for an endpoint with a running RESIDENT adapter binary (today the `[message-idle-translation-binary]`), the CLI keeps fetch+verify and hands the APPLY to the daemon over IPC, which per affected endpoint (1) STOPS the resident binary -> releases the OS file lock (fixes the Windows 'Access denied (os error 5)' overwrite failure), (2) swaps on disk ONLY files whose CRC differs from the staged archive (unchanged files + their still-running binaries untouched), (3) RE-CLONES the new on-disk manifest into the running `BrainLifecycle` (the in-memory manifest is cached at bringup and otherwise goes stale -> binaries+manifest back on the same page), (4) RESTARTS the resident binary from the new files. An endpoint NOT running -> CLI swaps directly (no lock, no cache). Only the resident class is cycled; ephemeral adapter binaries (Psyche loop, `[digest]` extractor, `[session.*]` runners, hooks) self-heal on next spawn and are excluded. The daemon keeps a per-endpoint registry of resident adapter children. (ADR-0025, v0.13.2)",
2026-06-23T10:05:46.8343824Z       "requiredStages": [
2026-06-23T10:05:46.8344024Z         "doc",
2026-06-23T10:05:46.8344192Z         "impl",
2026-06-23T10:05:46.8344358Z         "unit",
2026-06-23T10:05:46.8344535Z         "int"
2026-06-23T10:05:46.8344701Z       ],
2026-06-23T10:05:46.8344864Z       "stages": {
2026-06-23T10:05:46.8345040Z         "doc": {
2026-06-23T10:05:46.8345226Z           "complete": true,
2026-06-23T10:05:46.8345545Z           "evidence": [
2026-06-23T10:05:46.8345737Z             {
2026-06-23T10:05:46.8345994Z               "path": "docs/adr/0025-live-daemon-coordinated-adapter-update.md",
2026-06-23T10:05:46.8346312Z               "line": 3
2026-06-23T10:05:46.8346492Z             },
2026-06-23T10:05:46.8346653Z             {
2026-06-23T10:05:46.8346905Z               "path": "docs/adr/0025-live-daemon-coordinated-adapter-update.md",
2026-06-23T10:05:46.8347216Z               "line": 44
2026-06-23T10:05:46.8347402Z             }
2026-06-23T10:05:46.8347558Z           ]
2026-06-23T10:05:46.8347717Z         },
2026-06-23T10:05:46.8347878Z         "impl": {
2026-06-23T10:05:46.8348056Z           "complete": true,
2026-06-23T10:05:46.8348260Z           "evidence": [
2026-06-23T10:05:46.8348445Z             {
2026-06-23T10:05:46.8348624Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.8348879Z               "line": 982
2026-06-23T10:05:46.8349148Z             },
2026-06-23T10:05:46.8349321Z             {
2026-06-23T10:05:46.8349520Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.8349912Z               "line": 1044
2026-06-23T10:05:46.8350203Z             },
2026-06-23T10:05:46.8350450Z             {
2026-06-23T10:05:46.8350736Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.8351137Z               "line": 1088
2026-06-23T10:05:46.8351433Z             },
2026-06-23T10:05:46.8351693Z             {
2026-06-23T10:05:46.8351994Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.8352361Z               "line": 1210
2026-06-23T10:05:46.8352646Z             },
2026-06-23T10:05:46.8352900Z             {
2026-06-23T10:05:46.8353181Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.8353572Z               "line": 1346
2026-06-23T10:05:46.8353844Z             },
2026-06-23T10:05:46.8354096Z             {
2026-06-23T10:05:46.8354394Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.8354776Z               "line": 1359
2026-06-23T10:05:46.8355062Z             },
2026-06-23T10:05:46.8355310Z             {
2026-06-23T10:05:46.8355605Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.8355992Z               "line": 1457
2026-06-23T10:05:46.8356288Z             },
2026-06-23T10:05:46.8356540Z             {
2026-06-23T10:05:46.8356843Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.8357232Z               "line": 2313
2026-06-23T10:05:46.8357513Z             },
2026-06-23T10:05:46.8357766Z             {
2026-06-23T10:05:46.8358062Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-06-23T10:05:46.8358462Z               "line": 37
2026-06-23T10:05:46.8358739Z             },
2026-06-23T10:05:46.8359044Z             {
2026-06-23T10:05:46.8359339Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-06-23T10:05:46.8359756Z               "line": 93
2026-06-23T10:05:46.8360023Z             },
2026-06-23T10:05:46.8360272Z             {
2026-06-23T10:05:46.8360581Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8387457Z               "line": 75
2026-06-23T10:05:46.8387839Z             },
2026-06-23T10:05:46.8388124Z             {
2026-06-23T10:05:46.8388486Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8388908Z               "line": 101
2026-06-23T10:05:46.8389566Z             },
2026-06-23T10:05:46.8389833Z             {
2026-06-23T10:05:46.8390148Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8390540Z               "line": 127
2026-06-23T10:05:46.8390845Z             },
2026-06-23T10:05:46.8391104Z             {
2026-06-23T10:05:46.8391426Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8391818Z               "line": 224
2026-06-23T10:05:46.8392109Z             },
2026-06-23T10:05:46.8392356Z             {
2026-06-23T10:05:46.8392661Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8393224Z               "line": 232
2026-06-23T10:05:46.8393501Z             },
2026-06-23T10:05:46.8393760Z             {
2026-06-23T10:05:46.8394063Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8394455Z               "line": 251
2026-06-23T10:05:46.8394750Z             },
2026-06-23T10:05:46.8395002Z             {
2026-06-23T10:05:46.8395312Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8395694Z               "line": 326
2026-06-23T10:05:46.8395971Z             },
2026-06-23T10:05:46.8396227Z             {
2026-06-23T10:05:46.8396778Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:46.8397216Z               "line": 233
2026-06-23T10:05:46.8397511Z             },
2026-06-23T10:05:46.8397774Z             {
2026-06-23T10:05:46.8398084Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:46.8398460Z               "line": 239
2026-06-23T10:05:46.8398756Z             },
2026-06-23T10:05:46.8399122Z             {
2026-06-23T10:05:46.8399420Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:46.8399777Z               "line": 259
2026-06-23T10:05:46.8400064Z             },
2026-06-23T10:05:46.8400308Z             {
2026-06-23T10:05:46.8400579Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8400941Z               "line": 6403
2026-06-23T10:05:46.8401236Z             },
2026-06-23T10:05:46.8401496Z             {
2026-06-23T10:05:46.8401741Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8401991Z               "line": 6428
2026-06-23T10:05:46.8402183Z             },
2026-06-23T10:05:46.8402354Z             {
2026-06-23T10:05:46.8402535Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8402774Z               "line": 6457
2026-06-23T10:05:46.8420535Z             }
2026-06-23T10:05:46.8420840Z           ]
2026-06-23T10:05:46.8421066Z         },
2026-06-23T10:05:46.8421237Z         "int": {
2026-06-23T10:05:46.8421446Z           "complete": true,
2026-06-23T10:05:46.8421671Z           "evidence": [
2026-06-23T10:05:46.8421857Z             {
2026-06-23T10:05:46.8422095Z               "path": "crates/spt/tests/live_adapt_psyche_lock_e2e.rs",
2026-06-23T10:05:46.8422376Z               "line": 338
2026-06-23T10:05:46.8422563Z             },
2026-06-23T10:05:46.8422723Z             {
2026-06-23T10:05:46.8423069Z               "path": "crates/spt/tests/live_adapt_psyche_lock_e2e.rs",
2026-06-23T10:05:46.8423351Z               "line": 351
2026-06-23T10:05:46.8423547Z             },
2026-06-23T10:05:46.8423707Z             {
2026-06-23T10:05:46.8423942Z               "path": "crates/spt/tests/live_adapt_translation_swap_e2e.rs",
2026-06-23T10:05:46.8424233Z               "line": 96
2026-06-23T10:05:46.8424414Z             }
2026-06-23T10:05:46.8424576Z           ]
2026-06-23T10:05:46.8424733Z         },
2026-06-23T10:05:46.8424891Z         "unit": {
2026-06-23T10:05:46.8425073Z           "complete": true,
2026-06-23T10:05:46.8425287Z           "evidence": [
2026-06-23T10:05:46.8425464Z             {
2026-06-23T10:05:46.8425667Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.8425919Z               "line": 3136
2026-06-23T10:05:46.8426107Z             },
2026-06-23T10:05:46.8426272Z             {
2026-06-23T10:05:46.8426468Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.8426930Z               "line": 3169
2026-06-23T10:05:46.8427121Z             },
2026-06-23T10:05:46.8427293Z             {
2026-06-23T10:05:46.8427483Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.8427723Z               "line": 3193
2026-06-23T10:05:46.8427902Z             },
2026-06-23T10:05:46.8428059Z             {
2026-06-23T10:05:46.8428252Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-06-23T10:05:46.8428500Z               "line": 222
2026-06-23T10:05:46.8428687Z             },
2026-06-23T10:05:46.8428839Z             {
2026-06-23T10:05:46.8429235Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-06-23T10:05:46.8429483Z               "line": 253
2026-06-23T10:05:46.8429664Z             },
2026-06-23T10:05:46.8429821Z             {
2026-06-23T10:05:46.8430012Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-06-23T10:05:46.8430247Z               "line": 276
2026-06-23T10:05:46.8430427Z             },
2026-06-23T10:05:46.8430595Z             {
2026-06-23T10:05:46.8430788Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-06-23T10:05:46.8431025Z               "line": 331
2026-06-23T10:05:46.8431206Z             },
2026-06-23T10:05:46.8431368Z             {
2026-06-23T10:05:46.8431569Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8431807Z               "line": 1360
2026-06-23T10:05:46.8431983Z             },
2026-06-23T10:05:46.8432136Z             {
2026-06-23T10:05:46.8432341Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8432589Z               "line": 1399
2026-06-23T10:05:46.8432771Z             },
2026-06-23T10:05:46.8432936Z             {
2026-06-23T10:05:46.8433133Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8433374Z               "line": 1445
2026-06-23T10:05:46.8433568Z             },
2026-06-23T10:05:46.8433725Z             {
2026-06-23T10:05:46.8433920Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8434150Z               "line": 1479
2026-06-23T10:05:46.8434330Z             },
2026-06-23T10:05:46.8434497Z             {
2026-06-23T10:05:46.8434684Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8434935Z               "line": 1531
2026-06-23T10:05:46.8435108Z             },
2026-06-23T10:05:46.8435270Z             {
2026-06-23T10:05:46.8435446Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8435671Z               "line": 12773
2026-06-23T10:05:46.8435861Z             },
2026-06-23T10:05:46.8436024Z             {
2026-06-23T10:05:46.8436212Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8436442Z               "line": 12855
2026-06-23T10:05:46.8436628Z             },
2026-06-23T10:05:46.8436794Z             {
2026-06-23T10:05:46.8436981Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8437200Z               "line": 12887
2026-06-23T10:05:46.8437381Z             }
2026-06-23T10:05:46.8437538Z           ]
2026-06-23T10:05:46.8437700Z         }
2026-06-23T10:05:46.8437863Z       }
2026-06-23T10:05:46.8438024Z     },
2026-06-23T10:05:46.8438187Z     {
2026-06-23T10:05:46.8438420Z       "id": "REQ-ADAPTER-MULTIPLATFORM-SPT",
2026-06-23T10:05:46.8441272Z       "title": "A `.spt` adapter archive may pack multiple platforms in one signed asset: shared `manifest.toml` + `strings/` at the root, role binaries under per-Rust-target-triple subdirectories (ADR-0016 triple vocabulary, e.g. `x86_64-pc-windows-msvc/`); install/update extracts the shared root plus ONLY `current_platform()`'s triple subdir, flattened into `install_dir` so flat `<install_dir>/<program>` resolution (REQ-INSTALL-11) is unchanged. Name stays `adapter.spt` (plain-tar or gzip, `--asset` optional default); one whole-archive Ed25519 signature over the fat archive (REQ-UPD-9 single-artifact verify). A legacy flat archive (no triple subdirs) extracts as today (free back-compat); a multi-platform archive sets `min_spt_core_version >= 0.13.2` (forward-compat gate, readable before extract); a multi-platform archive missing the recipient's triple -> typed `NoArtifactForPlatform`, never a silent no-op. Large adapters may still split per-platform (single-triple archives via `--asset`, or ADR-0016 update-set machinery). (ADR-0024, v0.13.2)",
2026-06-23T10:05:46.8444294Z       "requiredStages": [
2026-06-23T10:05:46.8444490Z         "doc",
2026-06-23T10:05:46.8444657Z         "impl",
2026-06-23T10:05:46.8444833Z         "unit",
2026-06-23T10:05:46.8445000Z         "int"
2026-06-23T10:05:46.8445162Z       ],
2026-06-23T10:05:46.8445434Z       "stages": {
2026-06-23T10:05:46.8445611Z         "doc": {
2026-06-23T10:05:46.8445792Z           "complete": true,
2026-06-23T10:05:46.8445997Z           "evidence": [
2026-06-23T10:05:46.8446183Z             {
2026-06-23T10:05:46.8446449Z               "path": "docs/adr/0024-multi-platform-adapter-spt-packaging.md",
2026-06-23T10:05:46.8446758Z               "line": 3
2026-06-23T10:05:46.8446950Z             }
2026-06-23T10:05:46.8447111Z           ]
2026-06-23T10:05:46.8447279Z         },
2026-06-23T10:05:46.8447445Z         "impl": {
2026-06-23T10:05:46.8447627Z           "complete": true,
2026-06-23T10:05:46.8447818Z           "evidence": [
2026-06-23T10:05:46.8447999Z             {
2026-06-23T10:05:46.8448195Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:46.8448443Z               "line": 189
2026-06-23T10:05:46.8448613Z             },
2026-06-23T10:05:46.8448772Z             {
2026-06-23T10:05:46.8449013Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8449425Z               "line": 3061
2026-06-23T10:05:46.8449754Z             },
2026-06-23T10:05:46.8449973Z             {
2026-06-23T10:05:46.8450208Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8450523Z               "line": 3151
2026-06-23T10:05:46.8450757Z             }
2026-06-23T10:05:46.8450951Z           ]
2026-06-23T10:05:46.8451146Z         },
2026-06-23T10:05:46.8451358Z         "int": {
2026-06-23T10:05:46.8451576Z           "complete": true,
2026-06-23T10:05:46.8451823Z           "evidence": [
2026-06-23T10:05:46.8452042Z             {
2026-06-23T10:05:46.8452269Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8452549Z               "line": 12608
2026-06-23T10:05:46.8452774Z             },
2026-06-23T10:05:46.8452971Z             {
2026-06-23T10:05:46.8453193Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8453475Z               "line": 12672
2026-06-23T10:05:46.8453709Z             },
2026-06-23T10:05:46.8453905Z             {
2026-06-23T10:05:46.8454133Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8454409Z               "line": 12715
2026-06-23T10:05:46.8454636Z             }
2026-06-23T10:05:46.8454826Z           ]
2026-06-23T10:05:46.8455026Z         },
2026-06-23T10:05:46.8455222Z         "unit": {
2026-06-23T10:05:46.8455450Z           "complete": true,
2026-06-23T10:05:46.8455689Z           "evidence": [
2026-06-23T10:05:46.8455918Z             {
2026-06-23T10:05:46.8456143Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8456424Z               "line": 12543
2026-06-23T10:05:46.8456652Z             },
2026-06-23T10:05:46.8456806Z             {
2026-06-23T10:05:46.8456991Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8457215Z               "line": 12560
2026-06-23T10:05:46.8457399Z             }
2026-06-23T10:05:46.8457562Z           ]
2026-06-23T10:05:46.8457719Z         }
2026-06-23T10:05:46.8457877Z       }
2026-06-23T10:05:46.8458039Z     },
2026-06-23T10:05:46.8458211Z     {
2026-06-23T10:05:46.8458426Z       "id": "REQ-ADAPTER-PROOF-DIR-OVERRIDE",
2026-06-23T10:05:46.8460053Z       "title": "The author-time proof commands (`spt adapter digest-proof`, `spt adapter translate-proof`) gain a `--dir <path>` / `--manifest <file>` override so an author proofs a DEV binary against an on-disk manifest+install dir WITHOUT staging a full extracted GhReleaseManaged install (mirrors digest-proof's `--sample` pointing straight at a file). Fixes perri F-011: a bare-file-added gh_release adapter currently can't be resolved by the *-proof commands ('manifest is not present yet at <dir>'); un-stales the bare-file digest-proof int. (perri F-011, v0.13.x DX)",
2026-06-23T10:05:46.8461750Z       "requiredStages": [
2026-06-23T10:05:46.8461946Z         "doc",
2026-06-23T10:05:46.8462126Z         "impl",
2026-06-23T10:05:46.8462299Z         "unit",
2026-06-23T10:05:46.8462473Z         "int"
2026-06-23T10:05:46.8462644Z       ],
2026-06-23T10:05:46.8462795Z       "stages": {
2026-06-23T10:05:46.8463076Z         "doc": {
2026-06-23T10:05:46.8463254Z           "complete": true,
2026-06-23T10:05:46.8463458Z           "evidence": [
2026-06-23T10:05:46.8463645Z             {
2026-06-23T10:05:46.8463869Z               "path": "docs-site/src/harness-contract/patterns.md",
2026-06-23T10:05:46.8464156Z               "line": 338
2026-06-23T10:05:46.8464340Z             },
2026-06-23T10:05:46.8464499Z             {
2026-06-23T10:05:46.8464679Z               "path": "docs/MANIFEST.md",
2026-06-23T10:05:46.8464903Z               "line": 189
2026-06-23T10:05:46.8465083Z             }
2026-06-23T10:05:46.8465252Z           ]
2026-06-23T10:05:46.8465419Z         },
2026-06-23T10:05:46.8465577Z         "impl": {
2026-06-23T10:05:46.8465759Z           "complete": true,
2026-06-23T10:05:46.8465963Z           "evidence": [
2026-06-23T10:05:46.8466144Z             {
2026-06-23T10:05:46.8466335Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8466578Z               "line": 6317
2026-06-23T10:05:46.8466774Z             },
2026-06-23T10:05:46.8466936Z             {
2026-06-23T10:05:46.8467117Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8467352Z               "line": 6329
2026-06-23T10:05:46.8467541Z             },
2026-06-23T10:05:46.8467700Z             {
2026-06-23T10:05:46.8467888Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8468122Z               "line": 6805
2026-06-23T10:05:46.8468299Z             }
2026-06-23T10:05:46.8468461Z           ]
2026-06-23T10:05:46.8468609Z         },
2026-06-23T10:05:46.8468766Z         "int": {
2026-06-23T10:05:46.8469028Z           "complete": true,
2026-06-23T10:05:46.8469224Z           "evidence": [
2026-06-23T10:05:46.8469400Z             {
2026-06-23T10:05:46.8469601Z               "path": "crates/spt/tests/translate_proof.rs",
2026-06-23T10:05:46.8469853Z               "line": 156
2026-06-23T10:05:46.8470029Z             }
2026-06-23T10:05:46.8470190Z           ]
2026-06-23T10:05:46.8470370Z         },
2026-06-23T10:05:46.8470551Z         "unit": {
2026-06-23T10:05:46.8470727Z           "complete": true,
2026-06-23T10:05:46.8470923Z           "evidence": [
2026-06-23T10:05:46.8471103Z             {
2026-06-23T10:05:46.8471280Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8471514Z               "line": 8495
2026-06-23T10:05:46.8471695Z             }
2026-06-23T10:05:46.8471862Z           ]
2026-06-23T10:05:46.8472019Z         }
2026-06-23T10:05:46.8472177Z       }
2026-06-23T10:05:46.8472334Z     },
2026-06-23T10:05:46.8472492Z     {
2026-06-23T10:05:46.8472682Z       "id": "REQ-ADAPTER-TRANSLATE-PROOF",
2026-06-23T10:05:46.8480380Z       "title": "`spt adapter translate-proof <adapter> --event <envelope> [--session <id>]` — the author-time EMIT-half proof tool for `[message-idle-translation-binary]` (ADR-0022), symmetric to `spt adapter digest-proof` (REQ-TERM-5). It spawns and feeds the adapter's declared translation binary EXACTLY as the daemon does at idle-delivery — running the REAL `spt_daemon::translation` driver VERBATIM (no protocol reimplementation): `TranslationChild::spawn` the binary, send the `{type:\"init\",endpoint_id,node}` line then the `{type:\"event\",envelope}` line, and read back the emitted `{key}`/`{text}`/`{delay_ms}`/`{commit}` keystroke-command stream — then prints it author-readable (each Key with its `key_to_bytes` rendering, Text quoted, Delay in ms, Commit marker) with counts. It fills the SAME `{id}`→option and `{session_id}`→(--session, else a placeholder) keys into the `--event` envelope the daemon fills at runtime, so an envelope that proofs here feeds faithfully live. EMIT-half ONLY: it proves the binary's spawn+feed+emit contract; it does NOT exercise the daemon's atomic PTY apply / controller-buffering (that stays covered by the W2 inject_control_wedge int gate) — `--help` says so. Exit codes mirror digest-proof: 0 ok, 1 on spawn-fail / zero commands / no-commit-or-output / unparseable, 2 when the adapter declares no `[message-idle-translation-binary]` section. The `TranslationChild` Drop does the bounded no-zombie reap. (v0.13.x)",
2026-06-23T10:05:46.8484779Z       "requiredStages": [
2026-06-23T10:05:46.8485009Z         "doc",
2026-06-23T10:05:46.8485179Z         "impl",
2026-06-23T10:05:46.8485347Z         "unit",
2026-06-23T10:05:46.8545940Z         "int"
2026-06-23T10:05:46.8546255Z       ],
2026-06-23T10:05:46.8546451Z       "stages": {
2026-06-23T10:05:46.8546704Z         "doc": {
2026-06-23T10:05:46.8546907Z           "complete": true,
2026-06-23T10:05:46.8547139Z           "evidence": [
2026-06-23T10:05:46.8547315Z             {
2026-06-23T10:05:46.8547591Z               "path": "docs/adr/0022-spt-hosted-idle-delivery-translation-binary.md",
2026-06-23T10:05:46.8547925Z               "line": 73
2026-06-23T10:05:46.8548112Z             }
2026-06-23T10:05:46.8548268Z           ]
2026-06-23T10:05:46.8548440Z         },
2026-06-23T10:05:46.8548608Z         "impl": {
2026-06-23T10:05:46.8548793Z           "complete": true,
2026-06-23T10:05:46.8549102Z           "evidence": [
2026-06-23T10:05:46.8549281Z             {
2026-06-23T10:05:46.8549469Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8549706Z               "line": 6328
2026-06-23T10:05:46.8549896Z             },
2026-06-23T10:05:46.8550062Z             {
2026-06-23T10:05:46.8550235Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8550463Z               "line": 6973
2026-06-23T10:05:46.8550679Z             }
2026-06-23T10:05:46.8550860Z           ]
2026-06-23T10:05:46.8551035Z         },
2026-06-23T10:05:46.8551208Z         "int": {
2026-06-23T10:05:46.8551393Z           "complete": true,
2026-06-23T10:05:46.8551593Z           "evidence": [
2026-06-23T10:05:46.8551770Z             {
2026-06-23T10:05:46.8551965Z               "path": "crates/spt/tests/translate_proof.rs",
2026-06-23T10:05:46.8552223Z               "line": 45
2026-06-23T10:05:46.8552412Z             }
2026-06-23T10:05:46.8552580Z           ]
2026-06-23T10:05:46.8552746Z         },
2026-06-23T10:05:46.8552909Z         "unit": {
2026-06-23T10:05:46.8553095Z           "complete": true,
2026-06-23T10:05:46.8553309Z           "evidence": [
2026-06-23T10:05:46.8553485Z             {
2026-06-23T10:05:46.8553661Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8553886Z               "line": 10008
2026-06-23T10:05:46.8554088Z             },
2026-06-23T10:05:46.8554253Z             {
2026-06-23T10:05:46.8554435Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8554662Z               "line": 10080
2026-06-23T10:05:46.8554846Z             }
2026-06-23T10:05:46.8555003Z           ]
2026-06-23T10:05:46.8555165Z         }
2026-06-23T10:05:46.8555337Z       }
2026-06-23T10:05:46.8555513Z     },
2026-06-23T10:05:46.8555676Z     {
2026-06-23T10:05:46.8555861Z       "id": "REQ-ADAPTER-UPDATE-MESSAGE",
2026-06-23T10:05:46.8557690Z       "title": "An adapter manifest may declare `[update].message` — a plain (multi-line) human notice surfaced to stdout, markdown-rendered (the v0.13.0 helpfmt prose path), ONLY when `spt adapter update` actually APPLIES an update (version changed), not on a no-op. Read from the newly-installed manifest; avenue-agnostic (gh_release/delegated/file_pull). No `{key}` substitution. Use: an adapter telling the operator a post-update action, e.g. spt-claude-code's \"run `/reload-plugins` in any ongoing sessions\". (v0.13.2)",
2026-06-23T10:05:46.8559449Z       "requiredStages": [
2026-06-23T10:05:46.8559648Z         "doc",
2026-06-23T10:05:46.8559817Z         "impl",
2026-06-23T10:05:46.8559991Z         "unit"
2026-06-23T10:05:46.8560162Z       ],
2026-06-23T10:05:46.8560317Z       "stages": {
2026-06-23T10:05:46.8560494Z         "doc": {
2026-06-23T10:05:46.8560680Z           "complete": true,
2026-06-23T10:05:46.8560871Z           "evidence": [
2026-06-23T10:05:46.8561042Z             {
2026-06-23T10:05:46.8561224Z               "path": "CONTEXT.md",
2026-06-23T10:05:46.8561449Z               "line": 99
2026-06-23T10:05:46.8561628Z             },
2026-06-23T10:05:46.8561938Z             {
2026-06-23T10:05:46.8562126Z               "path": "CONTEXT.md",
2026-06-23T10:05:46.8562350Z               "line": 528
2026-06-23T10:05:46.8562534Z             },
2026-06-23T10:05:46.8562703Z             {
2026-06-23T10:05:46.8562930Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-23T10:05:46.8563197Z               "line": 391
2026-06-23T10:05:46.8563393Z             },
2026-06-23T10:05:46.8563554Z             {
2026-06-23T10:05:46.8563740Z               "path": "docs/MANIFEST.md",
2026-06-23T10:05:46.8563979Z               "line": 319
2026-06-23T10:05:46.8564155Z             }
2026-06-23T10:05:46.8564323Z           ]
2026-06-23T10:05:46.8564484Z         },
2026-06-23T10:05:46.8564648Z         "impl": {
2026-06-23T10:05:46.8564822Z           "complete": true,
2026-06-23T10:05:46.8565023Z           "evidence": [
2026-06-23T10:05:46.8565203Z             {
2026-06-23T10:05:46.8565401Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:46.8565674Z               "line": 497
2026-06-23T10:05:46.8565854Z             },
2026-06-23T10:05:46.8566012Z             {
2026-06-23T10:05:46.8566202Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8566464Z               "line": 6501
2026-06-23T10:05:46.8566646Z             },
2026-06-23T10:05:46.8566822Z             {
2026-06-23T10:05:46.8567018Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8567252Z               "line": 6650
2026-06-23T10:05:46.8567442Z             }
2026-06-23T10:05:46.8567609Z           ]
2026-06-23T10:05:46.8567767Z         },
2026-06-23T10:05:46.8567933Z         "int": {
2026-06-23T10:05:46.8568118Z           "complete": false,
2026-06-23T10:05:46.8568321Z           "evidence": []
2026-06-23T10:05:46.8568512Z         },
2026-06-23T10:05:46.8568678Z         "unit": {
2026-06-23T10:05:46.8568865Z           "complete": true,
2026-06-23T10:05:46.8569122Z           "evidence": [
2026-06-23T10:05:46.8569303Z             {
2026-06-23T10:05:46.8569494Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8569723Z               "line": 8462
2026-06-23T10:05:46.8569908Z             },
2026-06-23T10:05:46.8570076Z             {
2026-06-23T10:05:46.8570252Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8570481Z               "line": 8477
2026-06-23T10:05:46.8570665Z             }
2026-06-23T10:05:46.8570836Z           ]
2026-06-23T10:05:46.8570992Z         }
2026-06-23T10:05:46.8571155Z       }
2026-06-23T10:05:46.8571297Z     },
2026-06-23T10:05:46.8571460Z     {
2026-06-23T10:05:46.8571656Z       "id": "REQ-ADAPTER-VERSION-CMD",
2026-06-23T10:05:46.8573372Z       "title": "`spt adapter version <name>` prints a registered adapter's declared version — the EXISTING mandatory `[adapter].version` manifest field (manifest.rs already requires it; NOT a `[strings].version`, NOT `get-string`, no second version source). A new `AdapterCmd::Version{option}` resolves the option's merged view via `registry::resolve_option` like the sibling adapter subcommands and prints `manifest.adapter.version`; an unresolvable option errors (exit 1) the same way. (v0.13.2 W6)",
2026-06-23T10:05:46.8574706Z       "requiredStages": [
2026-06-23T10:05:46.8574893Z         "doc",
2026-06-23T10:05:46.8575077Z         "impl",
2026-06-23T10:05:46.8575250Z         "unit"
2026-06-23T10:05:46.8575416Z       ],
2026-06-23T10:05:46.8575579Z       "stages": {
2026-06-23T10:05:46.8575873Z         "doc": {
2026-06-23T10:05:46.8576051Z           "complete": true,
2026-06-23T10:05:46.8576248Z           "evidence": [
2026-06-23T10:05:46.8576433Z             {
2026-06-23T10:05:46.8576614Z               "path": "docs/MANIFEST.md",
2026-06-23T10:05:46.8576844Z               "line": 35
2026-06-23T10:05:46.8577038Z             }
2026-06-23T10:05:46.8577196Z           ]
2026-06-23T10:05:46.8577353Z         },
2026-06-23T10:05:46.8577520Z         "impl": {
2026-06-23T10:05:46.8577702Z           "complete": true,
2026-06-23T10:05:46.8577897Z           "evidence": [
2026-06-23T10:05:46.8578183Z             {
2026-06-23T10:05:46.8578356Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8578587Z               "line": 6293
2026-06-23T10:05:46.8578777Z             },
2026-06-23T10:05:46.8578928Z             {
2026-06-23T10:05:46.8579219Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8579439Z               "line": 6782
2026-06-23T10:05:46.8579630Z             }
2026-06-23T10:05:46.8579787Z           ]
2026-06-23T10:05:46.8579940Z         },
2026-06-23T10:05:46.8580102Z         "int": {
2026-06-23T10:05:46.8580283Z           "complete": false,
2026-06-23T10:05:46.8580478Z           "evidence": []
2026-06-23T10:05:46.8580665Z         },
2026-06-23T10:05:46.8580827Z         "unit": {
2026-06-23T10:05:46.8581060Z           "complete": true,
2026-06-23T10:05:46.8581372Z           "evidence": [
2026-06-23T10:05:46.8581672Z             {
2026-06-23T10:05:46.8582044Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8582387Z               "line": 8555
2026-06-23T10:05:46.8582659Z             },
2026-06-23T10:05:46.8583017Z             {
2026-06-23T10:05:46.8583283Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8583659Z               "line": 8566
2026-06-23T10:05:46.8583932Z             }
2026-06-23T10:05:46.8584169Z           ]
2026-06-23T10:05:46.8584489Z         }
2026-06-23T10:05:46.8584731Z       }
2026-06-23T10:05:46.8585003Z     },
2026-06-23T10:05:46.8585318Z     {
2026-06-23T10:05:46.8585586Z       "id": "REQ-API-1",
2026-06-23T10:05:46.8586019Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-23T10:05:46.8586424Z       "requiredStages": [
2026-06-23T10:05:46.8586746Z         "impl",
2026-06-23T10:05:46.8587017Z         "unit",
2026-06-23T10:05:46.8587270Z         "int"
2026-06-23T10:05:46.8587570Z       ],
2026-06-23T10:05:46.8587842Z       "stages": {
2026-06-23T10:05:46.8588147Z         "doc": {
2026-06-23T10:05:46.8588438Z           "complete": false,
2026-06-23T10:05:46.8588743Z           "evidence": []
2026-06-23T10:05:46.8589143Z         },
2026-06-23T10:05:46.8589403Z         "impl": {
2026-06-23T10:05:46.8589671Z           "complete": true,
2026-06-23T10:05:46.8590014Z           "evidence": [
2026-06-23T10:05:46.8590333Z             {
2026-06-23T10:05:46.8590647Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T10:05:46.8590986Z               "line": 15
2026-06-23T10:05:46.8591244Z             }
2026-06-23T10:05:46.8591545Z           ]
2026-06-23T10:05:46.8591814Z         },
2026-06-23T10:05:46.8592079Z         "int": {
2026-06-23T10:05:46.8592369Z           "complete": true,
2026-06-23T10:05:46.8592680Z           "evidence": [
2026-06-23T10:05:46.8592995Z             {
2026-06-23T10:05:46.8593295Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T10:05:46.8593652Z               "line": 13
2026-06-23T10:05:46.8593958Z             }
2026-06-23T10:05:46.8594201Z           ]
2026-06-23T10:05:46.8594558Z         },
2026-06-23T10:05:46.8594854Z         "unit": {
2026-06-23T10:05:46.8595150Z           "complete": true,
2026-06-23T10:05:46.8595464Z           "evidence": [
2026-06-23T10:05:46.8595726Z             {
2026-06-23T10:05:46.8596046Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T10:05:46.8596375Z               "line": 717
2026-06-23T10:05:46.8596628Z             },
2026-06-23T10:05:46.8596945Z             {
2026-06-23T10:05:46.8597379Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T10:05:46.8597873Z               "line": 804
2026-06-23T10:05:46.8598140Z             }
2026-06-23T10:05:46.8598384Z           ]
2026-06-23T10:05:46.8598684Z         }
2026-06-23T10:05:46.8599012Z       }
2026-06-23T10:05:46.8599289Z     },
2026-06-23T10:05:46.8599558Z     {
2026-06-23T10:05:46.8599856Z       "id": "REQ-API-2",
2026-06-23T10:05:46.8600292Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-23T10:05:46.8600730Z       "requiredStages": [
2026-06-23T10:05:46.8601026Z         "impl",
2026-06-23T10:05:46.8601423Z         "unit",
2026-06-23T10:05:46.8601684Z         "int"
2026-06-23T10:05:46.8601975Z       ],
2026-06-23T10:05:46.8602241Z       "stages": {
2026-06-23T10:05:46.8602549Z         "doc": {
2026-06-23T10:05:46.8602849Z           "complete": false,
2026-06-23T10:05:46.8603145Z           "evidence": []
2026-06-23T10:05:46.8603465Z         },
2026-06-23T10:05:46.8603731Z         "impl": {
2026-06-23T10:05:46.8604222Z           "complete": true,
2026-06-23T10:05:46.8604581Z           "evidence": [
2026-06-23T10:05:46.8604847Z             {
2026-06-23T10:05:46.8605222Z               "path": "crates/spt-store/src/history.rs",
2026-06-23T10:05:46.8605561Z               "line": 17
2026-06-23T10:05:46.8605813Z             },
2026-06-23T10:05:46.8606137Z             {
2026-06-23T10:05:46.8606415Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T10:05:46.8606816Z               "line": 20
2026-06-23T10:05:46.8607106Z             },
2026-06-23T10:05:46.8607377Z             {
2026-06-23T10:05:46.8607737Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T10:05:46.8608061Z               "line": 142
2026-06-23T10:05:46.8608371Z             },
2026-06-23T10:05:46.8608638Z             {
2026-06-23T10:05:46.8608934Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.8609368Z               "line": 24
2026-06-23T10:05:46.8609639Z             },
2026-06-23T10:05:46.8609964Z             {
2026-06-23T10:05:46.8610258Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.8610594Z               "line": 41
2026-06-23T10:05:46.8610894Z             },
2026-06-23T10:05:46.8611149Z             {
2026-06-23T10:05:46.8611429Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.8611796Z               "line": 213
2026-06-23T10:05:46.8612111Z             },
2026-06-23T10:05:46.8612397Z             {
2026-06-23T10:05:46.8612698Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.8613011Z               "line": 255
2026-06-23T10:05:46.8613334Z             },
2026-06-23T10:05:46.8613606Z             {
2026-06-23T10:05:46.8613901Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.8614250Z               "line": 334
2026-06-23T10:05:46.8614535Z             },
2026-06-23T10:05:46.8614850Z             {
2026-06-23T10:05:46.8615121Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.8615480Z               "line": 397
2026-06-23T10:05:46.8615773Z             },
2026-06-23T10:05:46.8616016Z             {
2026-06-23T10:05:46.8616345Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.8617185Z               "line": 436
2026-06-23T10:05:46.8617472Z             },
2026-06-23T10:05:46.8617758Z             {
2026-06-23T10:05:46.8618022Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T10:05:46.8618402Z               "line": 17
2026-06-23T10:05:46.8618673Z             },
2026-06-23T10:05:46.8618907Z             {
2026-06-23T10:05:46.8619714Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T10:05:46.8620085Z               "line": 30
2026-06-23T10:05:46.8620405Z             },
2026-06-23T10:05:46.8620668Z             {
2026-06-23T10:05:46.8620938Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T10:05:46.8621318Z               "line": 63
2026-06-23T10:05:46.8621580Z             },
2026-06-23T10:05:46.8621994Z             {
2026-06-23T10:05:46.8622291Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T10:05:46.8622638Z               "line": 77
2026-06-23T10:05:46.8622958Z             }
2026-06-23T10:05:46.8623221Z           ]
2026-06-23T10:05:46.8623490Z         },
2026-06-23T10:05:46.8623763Z         "int": {
2026-06-23T10:05:46.8624041Z           "complete": true,
2026-06-23T10:05:46.8624365Z           "evidence": [
2026-06-23T10:05:46.8624675Z             {
2026-06-23T10:05:46.8624975Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T10:05:46.8625454Z               "line": 14
2026-06-23T10:05:46.8625720Z             },
2026-06-23T10:05:46.8626026Z             {
2026-06-23T10:05:46.8626314Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T10:05:46.8626628Z               "line": 187
2026-06-23T10:05:46.8626977Z             }
2026-06-23T10:05:46.8627258Z           ]
2026-06-23T10:05:46.8627559Z         },
2026-06-23T10:05:46.8627816Z         "unit": {
2026-06-23T10:05:46.8628070Z           "complete": true,
2026-06-23T10:05:46.8628426Z           "evidence": [
2026-06-23T10:05:46.8628692Z             {
2026-06-23T10:05:46.8629068Z               "path": "crates/spt-store/src/history.rs",
2026-06-23T10:05:46.8629415Z               "line": 82
2026-06-23T10:05:46.8629706Z             },
2026-06-23T10:05:46.8630012Z             {
2026-06-23T10:05:46.8630298Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T10:05:46.8630660Z               "line": 279
2026-06-23T10:05:46.8630942Z             },
2026-06-23T10:05:46.8631204Z             {
2026-06-23T10:05:46.8631531Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.8631935Z               "line": 709
2026-06-23T10:05:46.8632235Z             },
2026-06-23T10:05:46.8632493Z             {
2026-06-23T10:05:46.8632779Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.8641568Z               "line": 720
2026-06-23T10:05:46.8641817Z             },
2026-06-23T10:05:46.8642043Z             {
2026-06-23T10:05:46.8642251Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.8642514Z               "line": 873
2026-06-23T10:05:46.8642700Z             },
2026-06-23T10:05:46.8642862Z             {
2026-06-23T10:05:46.8643058Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.8643314Z               "line": 919
2026-06-23T10:05:46.8643491Z             },
2026-06-23T10:05:46.8643654Z             {
2026-06-23T10:05:46.8643839Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T10:05:46.8644092Z               "line": 143
2026-06-23T10:05:46.8644274Z             },
2026-06-23T10:05:46.8644440Z             {
2026-06-23T10:05:46.8644630Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T10:05:46.8644875Z               "line": 187
2026-06-23T10:05:46.8645062Z             }
2026-06-23T10:05:46.8645223Z           ]
2026-06-23T10:05:46.8645386Z         }
2026-06-23T10:05:46.8645552Z       }
2026-06-23T10:05:46.8645710Z     },
2026-06-23T10:05:46.8645877Z     {
2026-06-23T10:05:46.8646043Z       "id": "REQ-API-3",
2026-06-23T10:05:46.8646297Z       "title": "commune/signoff are file-drops, not commands",
2026-06-23T10:05:46.8646588Z       "requiredStages": [
2026-06-23T10:05:46.8646782Z         "impl",
2026-06-23T10:05:46.8646955Z         "unit",
2026-06-23T10:05:46.8647117Z         "int"
2026-06-23T10:05:46.8647284Z       ],
2026-06-23T10:05:46.8647453Z       "stages": {
2026-06-23T10:05:46.8647626Z         "doc": {
2026-06-23T10:05:46.8647807Z           "complete": false,
2026-06-23T10:05:46.8648016Z           "evidence": []
2026-06-23T10:05:46.8648212Z         },
2026-06-23T10:05:46.8648369Z         "impl": {
2026-06-23T10:05:46.8648550Z           "complete": true,
2026-06-23T10:05:46.8648746Z           "evidence": [
2026-06-23T10:05:46.8648927Z             {
2026-06-23T10:05:46.8649213Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T10:05:46.8649618Z               "line": 27
2026-06-23T10:05:46.8649808Z             },
2026-06-23T10:05:46.8649972Z             {
2026-06-23T10:05:46.8650174Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.8650422Z               "line": 566
2026-06-23T10:05:46.8650607Z             }
2026-06-23T10:05:46.8650765Z           ]
2026-06-23T10:05:46.8650917Z         },
2026-06-23T10:05:46.8651070Z         "int": {
2026-06-23T10:05:46.8651246Z           "complete": true,
2026-06-23T10:05:46.8651441Z           "evidence": [
2026-06-23T10:05:46.8651618Z             {
2026-06-23T10:05:46.8651823Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T10:05:46.8652176Z               "line": 261
2026-06-23T10:05:46.8652358Z             }
2026-06-23T10:05:46.8652522Z           ]
2026-06-23T10:05:46.8652689Z         },
2026-06-23T10:05:46.8652849Z         "unit": {
2026-06-23T10:05:46.8653027Z           "complete": true,
2026-06-23T10:05:46.8653207Z           "evidence": [
2026-06-23T10:05:46.8653403Z             {
2026-06-23T10:05:46.8653604Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T10:05:46.8653846Z               "line": 280
2026-06-23T10:05:46.8654027Z             },
2026-06-23T10:05:46.8654194Z             {
2026-06-23T10:05:46.8654384Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.8654633Z               "line": 948
2026-06-23T10:05:46.8654820Z             }
2026-06-23T10:05:46.8654990Z           ]
2026-06-23T10:05:46.8655146Z         }
2026-06-23T10:05:46.8655307Z       }
2026-06-23T10:05:46.8655463Z     },
2026-06-23T10:05:46.8655622Z     {
2026-06-23T10:05:46.8655797Z       "id": "REQ-API-4",
2026-06-23T10:05:46.8657439Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-23T10:05:46.8658801Z       "requiredStages": [
2026-06-23T10:05:46.8659173Z         "doc",
2026-06-23T10:05:46.8659336Z         "impl",
2026-06-23T10:05:46.8659507Z         "unit"
2026-06-23T10:05:46.8659669Z       ],
2026-06-23T10:05:46.8659816Z       "stages": {
2026-06-23T10:05:46.8659989Z         "doc": {
2026-06-23T10:05:46.8660163Z           "complete": true,
2026-06-23T10:05:46.8660368Z           "evidence": [
2026-06-23T10:05:46.8660565Z             {
2026-06-23T10:05:46.8660744Z               "path": "CONTEXT.md",
2026-06-23T10:05:46.8660967Z               "line": 158
2026-06-23T10:05:46.8661143Z             }
2026-06-23T10:05:46.8661302Z           ]
2026-06-23T10:05:46.8661457Z         },
2026-06-23T10:05:46.8661621Z         "impl": {
2026-06-23T10:05:46.8661796Z           "complete": true,
2026-06-23T10:05:46.8662006Z           "evidence": [
2026-06-23T10:05:46.8662183Z             {
2026-06-23T10:05:46.8662373Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T10:05:46.8662613Z               "line": 484
2026-06-23T10:05:46.8662803Z             }
2026-06-23T10:05:46.8662969Z           ]
2026-06-23T10:05:46.8663135Z         },
2026-06-23T10:05:46.8663291Z         "int": {
2026-06-23T10:05:46.8663467Z           "complete": false,
2026-06-23T10:05:46.8663667Z           "evidence": []
2026-06-23T10:05:46.8663863Z         },
2026-06-23T10:05:46.8664029Z         "unit": {
2026-06-23T10:05:46.8664206Z           "complete": true,
2026-06-23T10:05:46.8664416Z           "evidence": [
2026-06-23T10:05:46.8664597Z             {
2026-06-23T10:05:46.8664779Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T10:05:46.8665016Z               "line": 657
2026-06-23T10:05:46.8665217Z             },
2026-06-23T10:05:46.8665380Z             {
2026-06-23T10:05:46.8665564Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T10:05:46.8665905Z               "line": 681
2026-06-23T10:05:46.8666096Z             },
2026-06-23T10:05:46.8666258Z             {
2026-06-23T10:05:46.8666440Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T10:05:46.8666668Z               "line": 705
2026-06-23T10:05:46.8666859Z             }
2026-06-23T10:05:46.8667012Z           ]
2026-06-23T10:05:46.8667173Z         }
2026-06-23T10:05:46.8667321Z       }
2026-06-23T10:05:46.8667478Z     },
2026-06-23T10:05:46.8667631Z     {
2026-06-23T10:05:46.8667802Z       "id": "REQ-ARCH-1",
2026-06-23T10:05:46.8668028Z       "title": "Many small acyclically-layered crates",
2026-06-23T10:05:46.8668390Z       "requiredStages": [
2026-06-23T10:05:46.8668583Z         "impl"
2026-06-23T10:05:46.8668747Z       ],
2026-06-23T10:05:46.8668898Z       "stages": {
2026-06-23T10:05:46.8669146Z         "doc": {
2026-06-23T10:05:46.8669328Z           "complete": false,
2026-06-23T10:05:46.8669528Z           "evidence": []
2026-06-23T10:05:46.8669718Z         },
2026-06-23T10:05:46.8669876Z         "impl": {
2026-06-23T10:05:46.8670057Z           "complete": true,
2026-06-23T10:05:46.8670263Z           "evidence": [
2026-06-23T10:05:46.8670438Z             {
2026-06-23T10:05:46.8670625Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-23T10:05:46.8670852Z               "line": 18
2026-06-23T10:05:46.8671040Z             },
2026-06-23T10:05:46.8671203Z             {
2026-06-23T10:05:46.8671388Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-23T10:05:46.8671628Z               "line": 12
2026-06-23T10:05:46.8671818Z             },
2026-06-23T10:05:46.8671994Z             {
2026-06-23T10:05:46.8672186Z               "path": "crates/spt-store/src/lib.rs",
2026-06-23T10:05:46.8672413Z               "line": 12
2026-06-23T10:05:46.8672590Z             }
2026-06-23T10:05:46.8672758Z           ]
2026-06-23T10:05:46.8672914Z         },
2026-06-23T10:05:46.8673068Z         "int": {
2026-06-23T10:05:46.8673243Z           "complete": false,
2026-06-23T10:05:46.8673450Z           "evidence": []
2026-06-23T10:05:46.8673639Z         },
2026-06-23T10:05:46.8673791Z         "unit": {
2026-06-23T10:05:46.8673974Z           "complete": false,
2026-06-23T10:05:46.8674171Z           "evidence": []
2026-06-23T10:05:46.8674356Z         }
2026-06-23T10:05:46.8674514Z       }
2026-06-23T10:05:46.8674671Z     },
2026-06-23T10:05:46.8674829Z     {
2026-06-23T10:05:46.8675000Z       "id": "REQ-ARCH-2",
2026-06-23T10:05:46.8675271Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-23T10:05:46.8675567Z       "requiredStages": [
2026-06-23T10:05:46.8675758Z         "impl"
2026-06-23T10:05:46.8675930Z       ],
2026-06-23T10:05:46.8676092Z       "stages": {
2026-06-23T10:05:46.8676262Z         "doc": {
2026-06-23T10:05:46.8676446Z           "complete": false,
2026-06-23T10:05:46.8676647Z           "evidence": []
2026-06-23T10:05:46.8676832Z         },
2026-06-23T10:05:46.8677004Z         "impl": {
2026-06-23T10:05:46.8677180Z           "complete": true,
2026-06-23T10:05:46.8677381Z           "evidence": [
2026-06-23T10:05:46.8677562Z             {
2026-06-23T10:05:46.8677748Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-23T10:05:46.8677991Z               "line": 18
2026-06-23T10:05:46.8678167Z             }
2026-06-23T10:05:46.8678324Z           ]
2026-06-23T10:05:46.8678482Z         },
2026-06-23T10:05:46.8678639Z         "int": {
2026-06-23T10:05:46.8678812Z           "complete": false,
2026-06-23T10:05:46.8679077Z           "evidence": []
2026-06-23T10:05:46.8679254Z         },
2026-06-23T10:05:46.8679410Z         "unit": {
2026-06-23T10:05:46.8679597Z           "complete": false,
2026-06-23T10:05:46.8679792Z           "evidence": []
2026-06-23T10:05:46.8679979Z         }
2026-06-23T10:05:46.8680136Z       }
2026-06-23T10:05:46.8680293Z     },
2026-06-23T10:05:46.8680446Z     {
2026-06-23T10:05:46.8680617Z       "id": "REQ-ARCH-3",
2026-06-23T10:05:46.8680917Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-23T10:05:46.8681364Z       "requiredStages": [
2026-06-23T10:05:46.8681563Z         "impl",
2026-06-23T10:05:46.8681735Z         "unit"
2026-06-23T10:05:46.8681902Z       ],
2026-06-23T10:05:46.8682068Z       "stages": {
2026-06-23T10:05:46.8682231Z         "doc": {
2026-06-23T10:05:46.8682455Z           "complete": false,
2026-06-23T10:05:46.8682654Z           "evidence": []
2026-06-23T10:05:46.8682841Z         },
2026-06-23T10:05:46.8682998Z         "impl": {
2026-06-23T10:05:46.8683184Z           "complete": true,
2026-06-23T10:05:46.8683385Z           "evidence": [
2026-06-23T10:05:46.8683686Z             {
2026-06-23T10:05:46.8683880Z               "path": "crates/spt-proto/src/version.rs",
2026-06-23T10:05:46.8684132Z               "line": 34
2026-06-23T10:05:46.8684327Z             },
2026-06-23T10:05:46.8684492Z             {
2026-06-23T10:05:46.8684688Z               "path": "crates/spt-proto/src/version.rs",
2026-06-23T10:05:46.8684935Z               "line": 41
2026-06-23T10:05:46.8685116Z             }
2026-06-23T10:05:46.8685275Z           ]
2026-06-23T10:05:46.8685426Z         },
2026-06-23T10:05:46.8685589Z         "int": {
2026-06-23T10:05:46.8685765Z           "complete": false,
2026-06-23T10:05:46.8685966Z           "evidence": []
2026-06-23T10:05:46.8686147Z         },
2026-06-23T10:05:46.8686313Z         "unit": {
2026-06-23T10:05:46.8686490Z           "complete": true,
2026-06-23T10:05:46.8686675Z           "evidence": [
2026-06-23T10:05:46.8686851Z             {
2026-06-23T10:05:46.8687049Z               "path": "crates/spt-proto/src/version.rs",
2026-06-23T10:05:46.8687298Z               "line": 51
2026-06-23T10:05:46.8687478Z             },
2026-06-23T10:05:46.8687645Z             {
2026-06-23T10:05:46.8687832Z               "path": "crates/spt-proto/src/version.rs",
2026-06-23T10:05:46.8688074Z               "line": 71
2026-06-23T10:05:46.8688255Z             },
2026-06-23T10:05:46.8688417Z             {
2026-06-23T10:05:46.8688613Z               "path": "crates/spt-proto/src/version.rs",
2026-06-23T10:05:46.8688861Z               "line": 83
2026-06-23T10:05:46.8689110Z             }
2026-06-23T10:05:46.8689275Z           ]
2026-06-23T10:05:46.8689435Z         }
2026-06-23T10:05:46.8689594Z       }
2026-06-23T10:05:46.8689762Z     },
2026-06-23T10:05:46.8689909Z     {
2026-06-23T10:05:46.8690076Z       "id": "REQ-ARCH-4",
2026-06-23T10:05:46.8690343Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-23T10:05:46.8690653Z       "requiredStages": [
2026-06-23T10:05:46.8690843Z         "impl",
2026-06-23T10:05:46.8691021Z         "unit"
2026-06-23T10:05:46.8691197Z       ],
2026-06-23T10:05:46.8691360Z       "stages": {
2026-06-23T10:05:46.8691525Z         "doc": {
2026-06-23T10:05:46.8691703Z           "complete": false,
2026-06-23T10:05:46.8691906Z           "evidence": []
2026-06-23T10:05:46.8692119Z         },
2026-06-23T10:05:46.8692280Z         "impl": {
2026-06-23T10:05:46.8692447Z           "complete": true,
2026-06-23T10:05:46.8692643Z           "evidence": [
2026-06-23T10:05:46.8692823Z             {
2026-06-23T10:05:46.8693034Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:46.8693273Z               "line": 165
2026-06-23T10:05:46.8693444Z             },
2026-06-23T10:05:46.8693606Z             {
2026-06-23T10:05:46.8693801Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:46.8694049Z               "line": 188
2026-06-23T10:05:46.8694227Z             },
2026-06-23T10:05:46.8694402Z             {
2026-06-23T10:05:46.8694599Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:46.8694844Z               "line": 208
2026-06-23T10:05:46.8695028Z             },
2026-06-23T10:05:46.8695195Z             {
2026-06-23T10:05:46.8695390Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:46.8695630Z               "line": 223
2026-06-23T10:05:46.8695811Z             },
2026-06-23T10:05:46.8695973Z             {
2026-06-23T10:05:46.8696159Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:46.8696512Z               "line": 273
2026-06-23T10:05:46.8696692Z             }
2026-06-23T10:05:46.8696855Z           ]
2026-06-23T10:05:46.8697016Z         },
2026-06-23T10:05:46.8697180Z         "int": {
2026-06-23T10:05:46.8697358Z           "complete": false,
2026-06-23T10:05:46.8697552Z           "evidence": []
2026-06-23T10:05:46.8697728Z         },
2026-06-23T10:05:46.8697904Z         "unit": {
2026-06-23T10:05:46.8698077Z           "complete": true,
2026-06-23T10:05:46.8698271Z           "evidence": [
2026-06-23T10:05:46.8698444Z             {
2026-06-23T10:05:46.8698740Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:46.8699041Z               "line": 334
2026-06-23T10:05:46.8699211Z             },
2026-06-23T10:05:46.8699370Z             {
2026-06-23T10:05:46.8699559Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:46.8699807Z               "line": 344
2026-06-23T10:05:46.8699985Z             },
2026-06-23T10:05:46.8700154Z             {
2026-06-23T10:05:46.8700336Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:46.8700574Z               "line": 355
2026-06-23T10:05:46.8700746Z             },
2026-06-23T10:05:46.8700917Z             {
2026-06-23T10:05:46.8701108Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:46.8701342Z               "line": 366
2026-06-23T10:05:46.8701527Z             },
2026-06-23T10:05:46.8701685Z             {
2026-06-23T10:05:46.8701867Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:46.8702095Z               "line": 378
2026-06-23T10:05:46.8702286Z             },
2026-06-23T10:05:46.8702451Z             {
2026-06-23T10:05:46.8702632Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:46.8702879Z               "line": 391
2026-06-23T10:05:46.8703060Z             },
2026-06-23T10:05:46.8703217Z             {
2026-06-23T10:05:46.8703402Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:46.8703646Z               "line": 402
2026-06-23T10:05:46.8703833Z             },
2026-06-23T10:05:46.8703989Z             {
2026-06-23T10:05:46.8704176Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:46.8704419Z               "line": 419
2026-06-23T10:05:46.8704604Z             },
2026-06-23T10:05:46.8704773Z             {
2026-06-23T10:05:46.8704962Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:46.8705196Z               "line": 547
2026-06-23T10:05:46.8705376Z             }
2026-06-23T10:05:46.8705532Z           ]
2026-06-23T10:05:46.8705697Z         }
2026-06-23T10:05:46.8705866Z       }
2026-06-23T10:05:46.8706022Z     },
2026-06-23T10:05:46.8706185Z     {
2026-06-23T10:05:46.8706351Z       "id": "REQ-CLI-1",
2026-06-23T10:05:46.8707557Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-23T10:05:46.8709032Z       "requiredStages": [
2026-06-23T10:05:46.8716003Z         "impl",
2026-06-23T10:05:46.8716253Z         "unit"
2026-06-23T10:05:46.8716435Z       ],
2026-06-23T10:05:46.8716616Z       "stages": {
2026-06-23T10:05:46.8716797Z         "doc": {
2026-06-23T10:05:46.8716974Z           "complete": false,
2026-06-23T10:05:46.8717177Z           "evidence": []
2026-06-23T10:05:46.8717369Z         },
2026-06-23T10:05:46.8717531Z         "impl": {
2026-06-23T10:05:46.8717708Z           "complete": true,
2026-06-23T10:05:46.8717900Z           "evidence": [
2026-06-23T10:05:46.8718079Z             {
2026-06-23T10:05:46.8718271Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8718512Z               "line": 225
2026-06-23T10:05:46.8718701Z             },
2026-06-23T10:05:46.8719101Z             {
2026-06-23T10:05:46.8719287Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8719517Z               "line": 1162
2026-06-23T10:05:46.8719702Z             },
2026-06-23T10:05:46.8719860Z             {
2026-06-23T10:05:46.8720035Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8720255Z               "line": 2069
2026-06-23T10:05:46.8720427Z             },
2026-06-23T10:05:46.8720589Z             {
2026-06-23T10:05:46.8720767Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8720989Z               "line": 3774
2026-06-23T10:05:46.8721260Z             }
2026-06-23T10:05:46.8721422Z           ]
2026-06-23T10:05:46.8721575Z         },
2026-06-23T10:05:46.8721742Z         "int": {
2026-06-23T10:05:46.8721927Z           "complete": false,
2026-06-23T10:05:46.8722152Z           "evidence": []
2026-06-23T10:05:46.8722343Z         },
2026-06-23T10:05:46.8722495Z         "unit": {
2026-06-23T10:05:46.8722667Z           "complete": true,
2026-06-23T10:05:46.8722877Z           "evidence": [
2026-06-23T10:05:46.8723064Z             {
2026-06-23T10:05:46.8723244Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8723467Z               "line": 9324
2026-06-23T10:05:46.8723643Z             }
2026-06-23T10:05:46.8723803Z           ]
2026-06-23T10:05:46.8723961Z         }
2026-06-23T10:05:46.8724118Z       }
2026-06-23T10:05:46.8724271Z     },
2026-06-23T10:05:46.8724428Z     {
2026-06-23T10:05:46.8724585Z       "id": "REQ-CLI-2",
2026-06-23T10:05:46.8725372Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-23T10:05:46.8726193Z       "requiredStages": [
2026-06-23T10:05:46.8726387Z         "impl",
2026-06-23T10:05:46.8726558Z         "unit"
2026-06-23T10:05:46.8726728Z       ],
2026-06-23T10:05:46.8726885Z       "stages": {
2026-06-23T10:05:46.8727052Z         "doc": {
2026-06-23T10:05:46.8727224Z           "complete": false,
2026-06-23T10:05:46.8727423Z           "evidence": []
2026-06-23T10:05:46.8727596Z         },
2026-06-23T10:05:46.8727762Z         "impl": {
2026-06-23T10:05:46.8727939Z           "complete": true,
2026-06-23T10:05:46.8728130Z           "evidence": [
2026-06-23T10:05:46.8728305Z             {
2026-06-23T10:05:46.8728512Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.8728760Z               "line": 414
2026-06-23T10:05:46.8729015Z             },
2026-06-23T10:05:46.8729186Z             {
2026-06-23T10:05:46.8729375Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-23T10:05:46.8729623Z               "line": 97
2026-06-23T10:05:46.8729805Z             },
2026-06-23T10:05:46.8729966Z             {
2026-06-23T10:05:46.8730163Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T10:05:46.8730411Z               "line": 256
2026-06-23T10:05:46.8730596Z             },
2026-06-23T10:05:46.8730759Z             {
2026-06-23T10:05:46.8730944Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8731177Z               "line": 439
2026-06-23T10:05:46.8731370Z             },
2026-06-23T10:05:46.8731531Z             {
2026-06-23T10:05:46.8731703Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8731925Z               "line": 1244
2026-06-23T10:05:46.8732117Z             },
2026-06-23T10:05:46.8732278Z             {
2026-06-23T10:05:46.8732455Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8732685Z               "line": 2312
2026-06-23T10:05:46.8732869Z             },
2026-06-23T10:05:46.8733027Z             {
2026-06-23T10:05:46.8733208Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8733442Z               "line": 2401
2026-06-23T10:05:46.8733614Z             },
2026-06-23T10:05:46.8733766Z             {
2026-06-23T10:05:46.8733944Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8734270Z               "line": 2462
2026-06-23T10:05:46.8734449Z             }
2026-06-23T10:05:46.8734602Z           ]
2026-06-23T10:05:46.8734764Z         },
2026-06-23T10:05:46.8734922Z         "int": {
2026-06-23T10:05:46.8735097Z           "complete": false,
2026-06-23T10:05:46.8735298Z           "evidence": []
2026-06-23T10:05:46.8735484Z         },
2026-06-23T10:05:46.8735632Z         "unit": {
2026-06-23T10:05:46.8735804Z           "complete": true,
2026-06-23T10:05:46.8736003Z           "evidence": [
2026-06-23T10:05:46.8736172Z             {
2026-06-23T10:05:46.8736472Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T10:05:46.8736724Z               "line": 338
2026-06-23T10:05:46.8736914Z             },
2026-06-23T10:05:46.8737076Z             {
2026-06-23T10:05:46.8737245Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8737469Z               "line": 9496
2026-06-23T10:05:46.8737650Z             }
2026-06-23T10:05:46.8737818Z           ]
2026-06-23T10:05:46.8737979Z         }
2026-06-23T10:05:46.8738137Z       }
2026-06-23T10:05:46.8738294Z     },
2026-06-23T10:05:46.8738447Z     {
2026-06-23T10:05:46.8738613Z       "id": "REQ-CLI-3",
2026-06-23T10:05:46.8739765Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-23T10:05:46.8740593Z       "requiredStages": [
2026-06-23T10:05:46.8740789Z         "impl",
2026-06-23T10:05:46.8740952Z         "unit"
2026-06-23T10:05:46.8741114Z       ],
2026-06-23T10:05:46.8741267Z       "stages": {
2026-06-23T10:05:46.8741428Z         "doc": {
2026-06-23T10:05:46.8741605Z           "complete": false,
2026-06-23T10:05:46.8741805Z           "evidence": []
2026-06-23T10:05:46.8741977Z         },
2026-06-23T10:05:46.8742148Z         "impl": {
2026-06-23T10:05:46.8742329Z           "complete": true,
2026-06-23T10:05:46.8742523Z           "evidence": [
2026-06-23T10:05:46.8742696Z             {
2026-06-23T10:05:46.8742872Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8743100Z               "line": 1156
2026-06-23T10:05:46.8743291Z             }
2026-06-23T10:05:46.8743449Z           ]
2026-06-23T10:05:46.8743611Z         },
2026-06-23T10:05:46.8743763Z         "int": {
2026-06-23T10:05:46.8743935Z           "complete": false,
2026-06-23T10:05:46.8744137Z           "evidence": []
2026-06-23T10:05:46.8744321Z         },
2026-06-23T10:05:46.8744470Z         "unit": {
2026-06-23T10:05:46.8744654Z           "complete": true,
2026-06-23T10:05:46.8744840Z           "evidence": [
2026-06-23T10:05:46.8745019Z             {
2026-06-23T10:05:46.8745196Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8745429Z               "line": 9289
2026-06-23T10:05:46.8745619Z             }
2026-06-23T10:05:46.8745788Z           ]
2026-06-23T10:05:46.8745943Z         }
2026-06-23T10:05:46.8746097Z       }
2026-06-23T10:05:46.8746258Z     },
2026-06-23T10:05:46.8746407Z     {
2026-06-23T10:05:46.8746568Z       "id": "REQ-CLI-4",
2026-06-23T10:05:46.8748787Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-23T10:05:46.8750758Z       "requiredStages": [],
2026-06-23T10:05:46.8751077Z       "stages": {
2026-06-23T10:05:46.8751249Z         "doc": {
2026-06-23T10:05:46.8751429Z           "complete": false,
2026-06-23T10:05:46.8751631Z           "evidence": []
2026-06-23T10:05:46.8751812Z         },
2026-06-23T10:05:46.8751974Z         "impl": {
2026-06-23T10:05:46.8752156Z           "complete": true,
2026-06-23T10:05:46.8752341Z           "evidence": [
2026-06-23T10:05:46.8752514Z             {
2026-06-23T10:05:46.8752703Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8752936Z               "line": 6364
2026-06-23T10:05:46.8753122Z             }
2026-06-23T10:05:46.8753408Z           ]
2026-06-23T10:05:46.8753552Z         },
2026-06-23T10:05:46.8753718Z         "int": {
2026-06-23T10:05:46.8753895Z           "complete": false,
2026-06-23T10:05:46.8754090Z           "evidence": []
2026-06-23T10:05:46.8754266Z         },
2026-06-23T10:05:46.8754420Z         "unit": {
2026-06-23T10:05:46.8754600Z           "complete": false,
2026-06-23T10:05:46.8754806Z           "evidence": []
2026-06-23T10:05:46.8755001Z         }
2026-06-23T10:05:46.8755158Z       }
2026-06-23T10:05:46.8755314Z     },
2026-06-23T10:05:46.8755475Z     {
2026-06-23T10:05:46.8755651Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-23T10:05:46.8758718Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-23T10:05:46.8761557Z       "requiredStages": [
2026-06-23T10:05:46.8761758Z         "impl",
2026-06-23T10:05:46.8761923Z         "unit"
2026-06-23T10:05:46.8762087Z       ],
2026-06-23T10:05:46.8762248Z       "stages": {
2026-06-23T10:05:46.8762421Z         "doc": {
2026-06-23T10:05:46.8762601Z           "complete": false,
2026-06-23T10:05:46.8762801Z           "evidence": []
2026-06-23T10:05:46.8762988Z         },
2026-06-23T10:05:46.8763158Z         "impl": {
2026-06-23T10:05:46.8763336Z           "complete": true,
2026-06-23T10:05:46.8763530Z           "evidence": [
2026-06-23T10:05:46.8763711Z             {
2026-06-23T10:05:46.8763905Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T10:05:46.8764140Z               "line": 8
2026-06-23T10:05:46.8764327Z             },
2026-06-23T10:05:46.8764488Z             {
2026-06-23T10:05:46.8764679Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T10:05:46.8764913Z               "line": 51
2026-06-23T10:05:46.8765098Z             },
2026-06-23T10:05:46.8765262Z             {
2026-06-23T10:05:46.8765451Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T10:05:46.8765681Z               "line": 82
2026-06-23T10:05:46.8765864Z             },
2026-06-23T10:05:46.8766026Z             {
2026-06-23T10:05:46.8766220Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T10:05:46.8766468Z               "line": 229
2026-06-23T10:05:46.8766664Z             }
2026-06-23T10:05:46.8766840Z           ]
2026-06-23T10:05:46.8766993Z         },
2026-06-23T10:05:46.8767155Z         "int": {
2026-06-23T10:05:46.8767332Z           "complete": false,
2026-06-23T10:05:46.8767527Z           "evidence": []
2026-06-23T10:05:46.8767708Z         },
2026-06-23T10:05:46.8767984Z         "unit": {
2026-06-23T10:05:46.8768167Z           "complete": true,
2026-06-23T10:05:46.8768366Z           "evidence": [
2026-06-23T10:05:46.8768548Z             {
2026-06-23T10:05:46.8768722Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T10:05:46.8769025Z               "line": 249
2026-06-23T10:05:46.8769207Z             },
2026-06-23T10:05:46.8769378Z             {
2026-06-23T10:05:46.8769565Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T10:05:46.8769799Z               "line": 256
2026-06-23T10:05:46.8769978Z             },
2026-06-23T10:05:46.8770232Z             {
2026-06-23T10:05:46.8770409Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T10:05:46.8770642Z               "line": 263
2026-06-23T10:05:46.8770823Z             },
2026-06-23T10:05:46.8770986Z             {
2026-06-23T10:05:46.8771175Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T10:05:46.8771409Z               "line": 270
2026-06-23T10:05:46.8771610Z             },
2026-06-23T10:05:46.8771779Z             {
2026-06-23T10:05:46.8771959Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T10:05:46.8772192Z               "line": 297
2026-06-23T10:05:46.8772365Z             },
2026-06-23T10:05:46.8772541Z             {
2026-06-23T10:05:46.8772727Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T10:05:46.8772962Z               "line": 307
2026-06-23T10:05:46.8773146Z             },
2026-06-23T10:05:46.8773315Z             {
2026-06-23T10:05:46.8773500Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T10:05:46.8773718Z               "line": 317
2026-06-23T10:05:46.8773916Z             },
2026-06-23T10:05:46.8774075Z             {
2026-06-23T10:05:46.8774262Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T10:05:46.8774490Z               "line": 331
2026-06-23T10:05:46.8774677Z             },
2026-06-23T10:05:46.8774843Z             {
2026-06-23T10:05:46.8775024Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T10:05:46.8775268Z               "line": 340
2026-06-23T10:05:46.8775448Z             },
2026-06-23T10:05:46.8775606Z             {
2026-06-23T10:05:46.8775788Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T10:05:46.8776016Z               "line": 348
2026-06-23T10:05:46.8776203Z             }
2026-06-23T10:05:46.8776368Z           ]
2026-06-23T10:05:46.8776525Z         }
2026-06-23T10:05:46.8776680Z       }
2026-06-23T10:05:46.8776838Z     },
2026-06-23T10:05:46.8777004Z     {
2026-06-23T10:05:46.8777177Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-23T10:05:46.8781825Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-23T10:05:46.8785713Z       "requiredStages": [
2026-06-23T10:05:46.8785913Z         "impl",
2026-06-23T10:05:46.8786086Z         "unit"
2026-06-23T10:05:46.8786261Z       ],
2026-06-23T10:05:46.8786420Z       "stages": {
2026-06-23T10:05:46.8786585Z         "doc": {
2026-06-23T10:05:46.8786763Z           "complete": false,
2026-06-23T10:05:46.8786970Z           "evidence": []
2026-06-23T10:05:46.8787160Z         },
2026-06-23T10:05:46.8787326Z         "impl": {
2026-06-23T10:05:46.8787512Z           "complete": true,
2026-06-23T10:05:46.8787817Z           "evidence": [
2026-06-23T10:05:46.8787995Z             {
2026-06-23T10:05:46.8788189Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.8788433Z               "line": 141
2026-06-23T10:05:46.8788624Z             },
2026-06-23T10:05:46.8788790Z             {
2026-06-23T10:05:46.8789062Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8789301Z               "line": 1468
2026-06-23T10:05:46.8789491Z             },
2026-06-23T10:05:46.8789659Z             {
2026-06-23T10:05:46.8789842Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8790074Z               "line": 2499
2026-06-23T10:05:46.8790260Z             },
2026-06-23T10:05:46.8790431Z             {
2026-06-23T10:05:46.8790604Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8790832Z               "line": 5023
2026-06-23T10:05:46.8791023Z             },
2026-06-23T10:05:46.8791181Z             {
2026-06-23T10:05:46.8791362Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8791605Z               "line": 5121
2026-06-23T10:05:46.8791786Z             },
2026-06-23T10:05:46.8791957Z             {
2026-06-23T10:05:46.8792140Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8792371Z               "line": 5912
2026-06-23T10:05:46.8792557Z             },
2026-06-23T10:05:46.8792712Z             {
2026-06-23T10:05:46.8792904Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T10:05:46.8793142Z               "line": 39
2026-06-23T10:05:46.8793322Z             }
2026-06-23T10:05:46.8793495Z           ]
2026-06-23T10:05:46.8793665Z         },
2026-06-23T10:05:46.8793819Z         "int": {
2026-06-23T10:05:46.8794000Z           "complete": false,
2026-06-23T10:05:46.8794205Z           "evidence": []
2026-06-23T10:05:46.8794392Z         },
2026-06-23T10:05:46.8794548Z         "unit": {
2026-06-23T10:05:46.8794726Z           "complete": true,
2026-06-23T10:05:46.8794920Z           "evidence": [
2026-06-23T10:05:46.8795116Z             {
2026-06-23T10:05:46.8795295Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8795520Z               "line": 11810
2026-06-23T10:05:46.8795707Z             },
2026-06-23T10:05:46.8795882Z             {
2026-06-23T10:05:46.8796059Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T10:05:46.8796302Z               "line": 281
2026-06-23T10:05:46.8796492Z             },
2026-06-23T10:05:46.8796670Z             {
2026-06-23T10:05:46.8796855Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T10:05:46.8797074Z               "line": 358
2026-06-23T10:05:46.8797261Z             },
2026-06-23T10:05:46.8797431Z             {
2026-06-23T10:05:46.8801122Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T10:05:46.8801422Z               "line": 381
2026-06-23T10:05:46.8801616Z             },
2026-06-23T10:05:46.8801779Z             {
2026-06-23T10:05:46.8801988Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T10:05:46.8802226Z               "line": 395
2026-06-23T10:05:46.8802423Z             }
2026-06-23T10:05:46.8802580Z           ]
2026-06-23T10:05:46.8802733Z         }
2026-06-23T10:05:46.8802889Z       }
2026-06-23T10:05:46.8803041Z     },
2026-06-23T10:05:46.8803197Z     {
2026-06-23T10:05:46.8803363Z       "id": "REQ-CONSENT-1",
2026-06-23T10:05:46.8804351Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-23T10:05:46.8805489Z       "requiredStages": [
2026-06-23T10:05:46.8805690Z         "impl",
2026-06-23T10:05:46.8805865Z         "unit"
2026-06-23T10:05:46.8806029Z       ],
2026-06-23T10:05:46.8806199Z       "stages": {
2026-06-23T10:05:46.8806376Z         "doc": {
2026-06-23T10:05:46.8806553Z           "complete": false,
2026-06-23T10:05:46.8806863Z           "evidence": []
2026-06-23T10:05:46.8807048Z         },
2026-06-23T10:05:46.8807211Z         "impl": {
2026-06-23T10:05:46.8807386Z           "complete": true,
2026-06-23T10:05:46.8807583Z           "evidence": [
2026-06-23T10:05:46.8807759Z             {
2026-06-23T10:05:46.8807972Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T10:05:46.8808234Z               "line": 27
2026-06-23T10:05:46.8808417Z             },
2026-06-23T10:05:46.8808581Z             {
2026-06-23T10:05:46.8808761Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T10:05:46.8809071Z               "line": 75
2026-06-23T10:05:46.8809253Z             },
2026-06-23T10:05:46.8809410Z             {
2026-06-23T10:05:46.8809600Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T10:05:46.8809848Z               "line": 98
2026-06-23T10:05:46.8810030Z             },
2026-06-23T10:05:46.8810177Z             {
2026-06-23T10:05:46.8810369Z               "path": "crates/spt-store/src/grants.rs",
2026-06-23T10:05:46.8810611Z               "line": 82
2026-06-23T10:05:46.8810802Z             },
2026-06-23T10:05:46.8810962Z             {
2026-06-23T10:05:46.8811142Z               "path": "crates/spt-store/src/grants.rs",
2026-06-23T10:05:46.8811381Z               "line": 109
2026-06-23T10:05:46.8811571Z             },
2026-06-23T10:05:46.8811724Z             {
2026-06-23T10:05:46.8811909Z               "path": "crates/spt-store/src/grants.rs",
2026-06-23T10:05:46.8812134Z               "line": 127
2026-06-23T10:05:46.8812316Z             },
2026-06-23T10:05:46.8812482Z             {
2026-06-23T10:05:46.8812664Z               "path": "crates/spt-store/src/grants.rs",
2026-06-23T10:05:46.8812887Z               "line": 142
2026-06-23T10:05:46.8813063Z             },
2026-06-23T10:05:46.8813222Z             {
2026-06-23T10:05:46.8813406Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8813630Z               "line": 8113
2026-06-23T10:05:46.8813808Z             }
2026-06-23T10:05:46.8813981Z           ]
2026-06-23T10:05:46.8814132Z         },
2026-06-23T10:05:46.8814219Z         "int": {
2026-06-23T10:05:46.8814310Z           "complete": false,
2026-06-23T10:05:46.8814400Z           "evidence": []
2026-06-23T10:05:46.8814486Z         },
2026-06-23T10:05:46.8814572Z         "unit": {
2026-06-23T10:05:46.8814658Z           "complete": true,
2026-06-23T10:05:46.8814743Z           "evidence": [
2026-06-23T10:05:46.8814844Z             {
2026-06-23T10:05:46.8814963Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T10:05:46.8815058Z               "line": 334
2026-06-23T10:05:46.8815144Z             },
2026-06-23T10:05:46.8815216Z             {
2026-06-23T10:05:46.8815330Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T10:05:46.8815411Z               "line": 380
2026-06-23T10:05:46.8815498Z             },
2026-06-23T10:05:46.8815583Z             {
2026-06-23T10:05:46.8815707Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T10:05:46.8815798Z               "line": 391
2026-06-23T10:05:46.8815879Z             },
2026-06-23T10:05:46.8815969Z             {
2026-06-23T10:05:46.8816074Z               "path": "crates/spt-store/src/grants.rs",
2026-06-23T10:05:46.8816170Z               "line": 165
2026-06-23T10:05:46.8816246Z             },
2026-06-23T10:05:46.8816330Z             {
2026-06-23T10:05:46.8816449Z               "path": "crates/spt-store/src/grants.rs",
2026-06-23T10:05:46.8816645Z               "line": 184
2026-06-23T10:05:46.8816735Z             },
2026-06-23T10:05:46.8816817Z             {
2026-06-23T10:05:46.8816936Z               "path": "crates/spt-store/src/grants.rs",
2026-06-23T10:05:46.8817016Z               "line": 204
2026-06-23T10:05:46.8817104Z             },
2026-06-23T10:05:46.8817189Z             {
2026-06-23T10:05:46.8817293Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8817379Z               "line": 9730
2026-06-23T10:05:46.8817461Z             }
2026-06-23T10:05:46.8817546Z           ]
2026-06-23T10:05:46.8817747Z         }
2026-06-23T10:05:46.8817833Z       }
2026-06-23T10:05:46.8817919Z     },
2026-06-23T10:05:46.8817999Z     {
2026-06-23T10:05:46.8818100Z       "id": "REQ-CONSENT-2",
2026-06-23T10:05:46.8818911Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-23T10:05:46.8819107Z       "requiredStages": [
2026-06-23T10:05:46.8819192Z         "impl",
2026-06-23T10:05:46.8819269Z         "unit"
2026-06-23T10:05:46.8819345Z       ],
2026-06-23T10:05:46.8819427Z       "stages": {
2026-06-23T10:05:46.8819517Z         "doc": {
2026-06-23T10:05:46.8819607Z           "complete": false,
2026-06-23T10:05:46.8819694Z           "evidence": []
2026-06-23T10:05:46.8819779Z         },
2026-06-23T10:05:46.8819864Z         "impl": {
2026-06-23T10:05:46.8819966Z           "complete": true,
2026-06-23T10:05:46.8820056Z           "evidence": [
2026-06-23T10:05:46.8820147Z             {
2026-06-23T10:05:46.8820270Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T10:05:46.8820362Z               "line": 140
2026-06-23T10:05:46.8820447Z             },
2026-06-23T10:05:46.8820527Z             {
2026-06-23T10:05:46.8820658Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T10:05:46.8820733Z               "line": 165
2026-06-23T10:05:46.8820818Z             },
2026-06-23T10:05:46.8820905Z             {
2026-06-23T10:05:46.8821010Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T10:05:46.8821094Z               "line": 199
2026-06-23T10:05:46.8821176Z             },
2026-06-23T10:05:46.8821249Z             {
2026-06-23T10:05:46.8821353Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T10:05:46.8821437Z               "line": 241
2026-06-23T10:05:46.8821522Z             },
2026-06-23T10:05:46.8821614Z             {
2026-06-23T10:05:46.8821726Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T10:05:46.8821807Z               "line": 269
2026-06-23T10:05:46.8821893Z             },
2026-06-23T10:05:46.8821974Z             {
2026-06-23T10:05:46.8822093Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T10:05:46.8822178Z               "line": 300
2026-06-23T10:05:46.8822266Z             },
2026-06-23T10:05:46.8822356Z             {
2026-06-23T10:05:46.8822460Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8822557Z               "line": 7904
2026-06-23T10:05:46.8822632Z             },
2026-06-23T10:05:46.8822713Z             {
2026-06-23T10:05:46.8822813Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8822905Z               "line": 7962
2026-06-23T10:05:46.8822994Z             }
2026-06-23T10:05:46.8823075Z           ]
2026-06-23T10:05:46.8823167Z         },
2026-06-23T10:05:46.8823252Z         "int": {
2026-06-23T10:05:46.8823352Z           "complete": false,
2026-06-23T10:05:46.8823442Z           "evidence": []
2026-06-23T10:05:46.8823534Z         },
2026-06-23T10:05:46.8823619Z         "unit": {
2026-06-23T10:05:46.8823705Z           "complete": true,
2026-06-23T10:05:46.8823787Z           "evidence": [
2026-06-23T10:05:46.8823873Z             {
2026-06-23T10:05:46.8823986Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T10:05:46.8824176Z               "line": 419
2026-06-23T10:05:46.8824255Z             },
2026-06-23T10:05:46.8824341Z             {
2026-06-23T10:05:46.8824445Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T10:05:46.8824532Z               "line": 436
2026-06-23T10:05:46.8824617Z             },
2026-06-23T10:05:46.8824697Z             {
2026-06-23T10:05:46.8824818Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T10:05:46.8824903Z               "line": 472
2026-06-23T10:05:46.8824993Z             },
2026-06-23T10:05:46.8825165Z             {
2026-06-23T10:05:46.8825280Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T10:05:46.8825370Z               "line": 516
2026-06-23T10:05:46.8825462Z             },
2026-06-23T10:05:46.8825542Z             {
2026-06-23T10:05:46.8825637Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8825723Z               "line": 11152
2026-06-23T10:05:46.8825819Z             },
2026-06-23T10:05:46.8825900Z             {
2026-06-23T10:05:46.8826004Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8826096Z               "line": 11234
2026-06-23T10:05:46.8826186Z             }
2026-06-23T10:05:46.8826271Z           ]
2026-06-23T10:05:46.8826358Z         }
2026-06-23T10:05:46.8826444Z       }
2026-06-23T10:05:46.8826524Z     },
2026-06-23T10:05:46.8826606Z     {
2026-06-23T10:05:46.8826707Z       "id": "REQ-CONSENT-3",
2026-06-23T10:05:46.8828574Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-23T10:05:46.8828689Z       "requiredStages": [
2026-06-23T10:05:46.8828773Z         "doc",
2026-06-23T10:05:46.8828869Z         "impl",
2026-06-23T10:05:46.8829192Z         "unit",
2026-06-23T10:05:46.8829278Z         "int"
2026-06-23T10:05:46.8829359Z       ],
2026-06-23T10:05:46.8829447Z       "stages": {
2026-06-23T10:05:46.8829528Z         "doc": {
2026-06-23T10:05:46.8829619Z           "complete": true,
2026-06-23T10:05:46.8829706Z           "evidence": [
2026-06-23T10:05:46.8829795Z             {
2026-06-23T10:05:46.8829901Z               "path": "CONTEXT.md",
2026-06-23T10:05:46.8829982Z               "line": 317
2026-06-23T10:05:46.8830068Z             }
2026-06-23T10:05:46.8830148Z           ]
2026-06-23T10:05:46.8830235Z         },
2026-06-23T10:05:46.8830311Z         "impl": {
2026-06-23T10:05:46.8830406Z           "complete": true,
2026-06-23T10:05:46.8830482Z           "evidence": [
2026-06-23T10:05:46.8830574Z             {
2026-06-23T10:05:46.8830702Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:46.8830782Z               "line": 123
2026-06-23T10:05:46.8830860Z             },
2026-06-23T10:05:46.8830945Z             {
2026-06-23T10:05:46.8831054Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:46.8831150Z               "line": 162
2026-06-23T10:05:46.8831227Z             },
2026-06-23T10:05:46.8831312Z             {
2026-06-23T10:05:46.8831426Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:46.8831518Z               "line": 291
2026-06-23T10:05:46.8831603Z             },
2026-06-23T10:05:46.8831689Z             {
2026-06-23T10:05:46.8831814Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:46.8831895Z               "line": 621
2026-06-23T10:05:46.8831974Z             },
2026-06-23T10:05:46.8832055Z             {
2026-06-23T10:05:46.8832174Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:46.8832372Z               "line": 871
2026-06-23T10:05:46.8832453Z             },
2026-06-23T10:05:46.8832539Z             {
2026-06-23T10:05:46.8832643Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8832724Z               "line": 8030
2026-06-23T10:05:46.8832812Z             }
2026-06-23T10:05:46.8832897Z           ]
2026-06-23T10:05:46.8832986Z         },
2026-06-23T10:05:46.8833068Z         "int": {
2026-06-23T10:05:46.8833160Z           "complete": true,
2026-06-23T10:05:46.8833245Z           "evidence": [
2026-06-23T10:05:46.8833417Z             {
2026-06-23T10:05:46.8833535Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-23T10:05:46.8833611Z               "line": 16
2026-06-23T10:05:46.8833697Z             }
2026-06-23T10:05:46.8833780Z           ]
2026-06-23T10:05:46.8833869Z         },
2026-06-23T10:05:46.8833950Z         "unit": {
2026-06-23T10:05:46.8834037Z           "complete": true,
2026-06-23T10:05:46.8834128Z           "evidence": [
2026-06-23T10:05:46.8834212Z             {
2026-06-23T10:05:46.8834327Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:46.8834414Z               "line": 1019
2026-06-23T10:05:46.8834503Z             },
2026-06-23T10:05:46.8834584Z             {
2026-06-23T10:05:46.8834697Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:46.8834783Z               "line": 1066
2026-06-23T10:05:46.8834862Z             },
2026-06-23T10:05:46.8834952Z             {
2026-06-23T10:05:46.8835068Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:46.8835158Z               "line": 1441
2026-06-23T10:05:46.8835244Z             }
2026-06-23T10:05:46.8835334Z           ]
2026-06-23T10:05:46.8835406Z         }
2026-06-23T10:05:46.8835492Z       }
2026-06-23T10:05:46.8835577Z     },
2026-06-23T10:05:46.8835659Z     {
2026-06-23T10:05:46.8835754Z       "id": "REQ-CONV-1",
2026-06-23T10:05:46.8837122Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-23T10:05:46.8837214Z       "requiredStages": [
2026-06-23T10:05:46.8837305Z         "impl",
2026-06-23T10:05:46.8837380Z         "unit"
2026-06-23T10:05:46.8837474Z       ],
2026-06-23T10:05:46.8837555Z       "stages": {
2026-06-23T10:05:46.8837642Z         "doc": {
2026-06-23T10:05:46.8837737Z           "complete": false,
2026-06-23T10:05:46.8837817Z           "evidence": []
2026-06-23T10:05:46.8837909Z         },
2026-06-23T10:05:46.8837995Z         "impl": {
2026-06-23T10:05:46.8838084Z           "complete": true,
2026-06-23T10:05:46.8838170Z           "evidence": [
2026-06-23T10:05:46.8838257Z             {
2026-06-23T10:05:46.8838385Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:46.8838480Z               "line": 938
2026-06-23T10:05:46.8838558Z             },
2026-06-23T10:05:46.8838638Z             {
2026-06-23T10:05:46.8838762Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:46.8838843Z               "line": 94
2026-06-23T10:05:46.8838924Z             },
2026-06-23T10:05:46.8839095Z             {
2026-06-23T10:05:46.8839206Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:46.8839305Z               "line": 345
2026-06-23T10:05:46.8839386Z             },
2026-06-23T10:05:46.8839468Z             {
2026-06-23T10:05:46.8839582Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:46.8839667Z               "line": 387
2026-06-23T10:05:46.8839748Z             },
2026-06-23T10:05:46.8839834Z             {
2026-06-23T10:05:46.8839951Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:46.8840132Z               "line": 472
2026-06-23T10:05:46.8840214Z             },
2026-06-23T10:05:46.8840294Z             {
2026-06-23T10:05:46.8840422Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.8840519Z               "line": 667
2026-06-23T10:05:46.8840595Z             },
2026-06-23T10:05:46.8840675Z             {
2026-06-23T10:05:46.8840781Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.8840881Z               "line": 693
2026-06-23T10:05:46.8840966Z             },
2026-06-23T10:05:46.8841153Z             {
2026-06-23T10:05:46.8841281Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:46.8841357Z               "line": 369
2026-06-23T10:05:46.8841453Z             },
2026-06-23T10:05:46.8841529Z             {
2026-06-23T10:05:46.8841652Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-23T10:05:46.8841740Z               "line": 19
2026-06-23T10:05:46.8841825Z             }
2026-06-23T10:05:46.8841910Z           ]
2026-06-23T10:05:46.8842001Z         },
2026-06-23T10:05:46.8842083Z         "int": {
2026-06-23T10:05:46.8842173Z           "complete": false,
2026-06-23T10:05:46.8842254Z           "evidence": []
2026-06-23T10:05:46.8842340Z         },
2026-06-23T10:05:46.8842422Z         "unit": {
2026-06-23T10:05:46.8842520Z           "complete": true,
2026-06-23T10:05:46.8842610Z           "evidence": [
2026-06-23T10:05:46.8842696Z             {
2026-06-23T10:05:46.8842805Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.8842908Z               "line": 1263
2026-06-23T10:05:46.8842989Z             },
2026-06-23T10:05:46.8843076Z             {
2026-06-23T10:05:46.8843199Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-23T10:05:46.8843280Z               "line": 108
2026-06-23T10:05:46.8843362Z             },
2026-06-23T10:05:46.8843442Z             {
2026-06-23T10:05:46.8843566Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-23T10:05:46.8843653Z               "line": 134
2026-06-23T10:05:46.8843748Z             },
2026-06-23T10:05:46.8843829Z             {
2026-06-23T10:05:46.8843943Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-23T10:05:46.8844049Z               "line": 144
2026-06-23T10:05:46.8844129Z             }
2026-06-23T10:05:46.8844214Z           ]
2026-06-23T10:05:46.8844292Z         }
2026-06-23T10:05:46.8844378Z       }
2026-06-23T10:05:46.8844472Z     },
2026-06-23T10:05:46.8844553Z     {
2026-06-23T10:05:46.8844645Z       "id": "REQ-CONV-2",
2026-06-23T10:05:46.8845723Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-23T10:05:46.8845832Z       "requiredStages": [
2026-06-23T10:05:46.8845924Z         "impl",
2026-06-23T10:05:46.8846014Z         "unit"
2026-06-23T10:05:46.8846099Z       ],
2026-06-23T10:05:46.8846185Z       "stages": {
2026-06-23T10:05:46.8846277Z         "doc": {
2026-06-23T10:05:46.8846372Z           "complete": false,
2026-06-23T10:05:46.8846457Z           "evidence": []
2026-06-23T10:05:46.8846544Z         },
2026-06-23T10:05:46.8846620Z         "impl": {
2026-06-23T10:05:46.8846719Z           "complete": true,
2026-06-23T10:05:46.8846805Z           "evidence": [
2026-06-23T10:05:46.8846892Z             {
2026-06-23T10:05:46.8847016Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8847106Z               "line": 617
2026-06-23T10:05:46.8847188Z             },
2026-06-23T10:05:46.8847268Z             {
2026-06-23T10:05:46.8847401Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-23T10:05:46.8847493Z               "line": 119
2026-06-23T10:05:46.8847668Z             },
2026-06-23T10:05:46.8847754Z             {
2026-06-23T10:05:46.8847893Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.8847982Z               "line": 841
2026-06-23T10:05:46.8848058Z             },
2026-06-23T10:05:46.8848139Z             {
2026-06-23T10:05:46.8848264Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.8848349Z               "line": 852
2026-06-23T10:05:46.8848435Z             },
2026-06-23T10:05:46.8848517Z             {
2026-06-23T10:05:46.8848640Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.8848803Z               "line": 334
2026-06-23T10:05:46.8848884Z             },
2026-06-23T10:05:46.8849035Z             {
2026-06-23T10:05:46.8849137Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8849227Z               "line": 3724
2026-06-23T10:05:46.8849312Z             },
2026-06-23T10:05:46.8849399Z             {
2026-06-23T10:05:46.8849494Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8849579Z               "line": 3740
2026-06-23T10:05:46.8849665Z             },
2026-06-23T10:05:46.8849752Z             {
2026-06-23T10:05:46.8849865Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8849946Z               "line": 3825
2026-06-23T10:05:46.8850028Z             }
2026-06-23T10:05:46.8850110Z           ]
2026-06-23T10:05:46.8850194Z         },
2026-06-23T10:05:46.8850279Z         "int": {
2026-06-23T10:05:46.8850374Z           "complete": false,
2026-06-23T10:05:46.8850455Z           "evidence": []
2026-06-23T10:05:46.8850530Z         },
2026-06-23T10:05:46.8850620Z         "unit": {
2026-06-23T10:05:46.8850711Z           "complete": true,
2026-06-23T10:05:46.8850802Z           "evidence": [
2026-06-23T10:05:46.8850883Z             {
2026-06-23T10:05:46.8851001Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.8851088Z               "line": 889
2026-06-23T10:05:46.8851164Z             },
2026-06-23T10:05:46.8851258Z             {
2026-06-23T10:05:46.8851374Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.8851464Z               "line": 1014
2026-06-23T10:05:46.8851555Z             },
2026-06-23T10:05:46.8851641Z             {
2026-06-23T10:05:46.8851784Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-23T10:05:46.8851865Z               "line": 215
2026-06-23T10:05:46.8851951Z             }
2026-06-23T10:05:46.8852037Z           ]
2026-06-23T10:05:46.8852122Z         }
2026-06-23T10:05:46.8852203Z       }
2026-06-23T10:05:46.8852285Z     },
2026-06-23T10:05:46.8852380Z     {
2026-06-23T10:05:46.8852475Z       "id": "REQ-DAEMON-1",
2026-06-23T10:05:46.8852653Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-23T10:05:46.8852751Z       "requiredStages": [
2026-06-23T10:05:46.8852842Z         "impl",
2026-06-23T10:05:46.8852934Z         "unit",
2026-06-23T10:05:46.8853015Z         "int"
2026-06-23T10:05:46.8853109Z       ],
2026-06-23T10:05:46.8853199Z       "stages": {
2026-06-23T10:05:46.8853285Z         "doc": {
2026-06-23T10:05:46.8853383Z           "complete": false,
2026-06-23T10:05:46.8853472Z           "evidence": []
2026-06-23T10:05:46.8853554Z         },
2026-06-23T10:05:46.8853641Z         "impl": {
2026-06-23T10:05:46.8853731Z           "complete": true,
2026-06-23T10:05:46.8853821Z           "evidence": [
2026-06-23T10:05:46.8853908Z             {
2026-06-23T10:05:46.8854022Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.8854121Z               "line": 229
2026-06-23T10:05:46.8854208Z             },
2026-06-23T10:05:46.8854299Z             {
2026-06-23T10:05:46.8854412Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T10:05:46.8854489Z               "line": 12
2026-06-23T10:05:46.8854585Z             },
2026-06-23T10:05:46.8854665Z             {
2026-06-23T10:05:46.8854794Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8854985Z               "line": 16
2026-06-23T10:05:46.8855066Z             },
2026-06-23T10:05:46.8855157Z             {
2026-06-23T10:05:46.8855262Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8855351Z               "line": 507
2026-06-23T10:05:46.8855438Z             },
2026-06-23T10:05:46.8855520Z             {
2026-06-23T10:05:46.8855642Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.8855728Z               "line": 24
2026-06-23T10:05:46.8855813Z             },
2026-06-23T10:05:46.8855894Z             {
2026-06-23T10:05:46.8856016Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.8856203Z               "line": 262
2026-06-23T10:05:46.8856284Z             },
2026-06-23T10:05:46.8856368Z             {
2026-06-23T10:05:46.8856494Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.8856589Z               "line": 279
2026-06-23T10:05:46.8856669Z             },
2026-06-23T10:05:46.8856750Z             {
2026-06-23T10:05:46.8856865Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.8856955Z               "line": 361
2026-06-23T10:05:46.8857041Z             },
2026-06-23T10:05:46.8857133Z             {
2026-06-23T10:05:46.8857251Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.8857332Z               "line": 721
2026-06-23T10:05:46.8857419Z             },
2026-06-23T10:05:46.8857504Z             {
2026-06-23T10:05:46.8857622Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-23T10:05:46.8857704Z               "line": 15
2026-06-23T10:05:46.8857796Z             },
2026-06-23T10:05:46.8857880Z             {
2026-06-23T10:05:46.8857995Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:46.8858082Z               "line": 241
2026-06-23T10:05:46.8858167Z             },
2026-06-23T10:05:46.8858252Z             {
2026-06-23T10:05:46.8858373Z               "path": "crates/spt/src/api/live.rs",
2026-06-23T10:05:46.8858449Z               "line": 13
2026-06-23T10:05:46.8858533Z             },
2026-06-23T10:05:46.8858618Z             {
2026-06-23T10:05:46.8858738Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:46.8858820Z               "line": 382
2026-06-23T10:05:46.8858899Z             },
2026-06-23T10:05:46.8859067Z             {
2026-06-23T10:05:46.8859172Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:46.8859262Z               "line": 494
2026-06-23T10:05:46.8859344Z             }
2026-06-23T10:05:46.8859429Z           ]
2026-06-23T10:05:46.8859510Z         },
2026-06-23T10:05:46.8859610Z         "int": {
2026-06-23T10:05:46.8859711Z           "complete": true,
2026-06-23T10:05:46.8859796Z           "evidence": [
2026-06-23T10:05:46.8859877Z             {
2026-06-23T10:05:46.8860045Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-23T10:05:46.8860144Z               "line": 2
2026-06-23T10:05:46.8860230Z             },
2026-06-23T10:05:46.8860317Z             {
2026-06-23T10:05:46.8860478Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-23T10:05:46.8860554Z               "line": 16
2026-06-23T10:05:46.8860647Z             },
2026-06-23T10:05:46.8860726Z             {
2026-06-23T10:05:46.8860873Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-23T10:05:46.8860954Z               "line": 12
2026-06-23T10:05:46.8861034Z             },
2026-06-23T10:05:46.8861119Z             {
2026-06-23T10:05:46.8861242Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-23T10:05:46.8861334Z               "line": 12
2026-06-23T10:05:46.8861419Z             },
2026-06-23T10:05:46.8861509Z             {
2026-06-23T10:05:46.8861639Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-23T10:05:46.8861733Z               "line": 44
2026-06-23T10:05:46.8861814Z             }
2026-06-23T10:05:46.8861891Z           ]
2026-06-23T10:05:46.8862076Z         },
2026-06-23T10:05:46.8862162Z         "unit": {
2026-06-23T10:05:46.8862259Z           "complete": true,
2026-06-23T10:05:46.8862349Z           "evidence": [
2026-06-23T10:05:46.8862439Z             {
2026-06-23T10:05:46.8862564Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T10:05:46.8862649Z               "line": 285
2026-06-23T10:05:46.8862740Z             },
2026-06-23T10:05:46.8862811Z             {
2026-06-23T10:05:46.8862926Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T10:05:46.8863011Z               "line": 293
2026-06-23T10:05:46.8863093Z             },
2026-06-23T10:05:46.8863269Z             {
2026-06-23T10:05:46.8863384Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T10:05:46.8863475Z               "line": 309
2026-06-23T10:05:46.8863551Z             },
2026-06-23T10:05:46.8863640Z             {
2026-06-23T10:05:46.8863754Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T10:05:46.8863850Z               "line": 317
2026-06-23T10:05:46.8863939Z             },
2026-06-23T10:05:46.8864019Z             {
2026-06-23T10:05:46.8864143Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8864230Z               "line": 870
2026-06-23T10:05:46.8864315Z             },
2026-06-23T10:05:46.8864400Z             {
2026-06-23T10:05:46.8864516Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8864611Z               "line": 940
2026-06-23T10:05:46.8864690Z             },
2026-06-23T10:05:46.8864783Z             {
2026-06-23T10:05:46.8864897Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.8864996Z               "line": 1314
2026-06-23T10:05:46.8865073Z             },
2026-06-23T10:05:46.8865159Z             {
2026-06-23T10:05:46.8865283Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.8865373Z               "line": 1351
2026-06-23T10:05:46.8865460Z             },
2026-06-23T10:05:46.8865540Z             {
2026-06-23T10:05:46.8865673Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.8865765Z               "line": 1374
2026-06-23T10:05:46.8865855Z             },
2026-06-23T10:05:46.8865946Z             {
2026-06-23T10:05:46.8866056Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.8866151Z               "line": 1403
2026-06-23T10:05:46.8866235Z             },
2026-06-23T10:05:46.8866326Z             {
2026-06-23T10:05:46.8866445Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.8866534Z               "line": 1451
2026-06-23T10:05:46.8866623Z             },
2026-06-23T10:05:46.8866710Z             {
2026-06-23T10:05:46.8866825Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.8866904Z               "line": 1494
2026-06-23T10:05:46.8866995Z             },
2026-06-23T10:05:46.8867078Z             {
2026-06-23T10:05:46.8867187Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-23T10:05:46.8867282Z               "line": 106
2026-06-23T10:05:46.8867364Z             },
2026-06-23T10:05:46.8867449Z             {
2026-06-23T10:05:46.8867553Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-23T10:05:46.8867640Z               "line": 132
2026-06-23T10:05:46.8867731Z             },
2026-06-23T10:05:46.8867806Z             {
2026-06-23T10:05:46.8867916Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:46.8867993Z               "line": 530
2026-06-23T10:05:46.8868079Z             }
2026-06-23T10:05:46.8868160Z           ]
2026-06-23T10:05:46.8868245Z         }
2026-06-23T10:05:46.8868337Z       }
2026-06-23T10:05:46.8868421Z     },
2026-06-23T10:05:46.8868507Z     {
2026-06-23T10:05:46.8868604Z       "id": "REQ-DAEMON-2",
2026-06-23T10:05:46.8868750Z       "title": "Broker/brain split for seamless self-update",
2026-06-23T10:05:46.8868841Z       "requiredStages": [
2026-06-23T10:05:46.8868919Z         "impl",
2026-06-23T10:05:46.8869093Z         "unit",
2026-06-23T10:05:46.8869264Z         "int"
2026-06-23T10:05:46.8869351Z       ],
2026-06-23T10:05:46.8869441Z       "stages": {
2026-06-23T10:05:46.8869521Z         "doc": {
2026-06-23T10:05:46.8869608Z           "complete": true,
2026-06-23T10:05:46.8869709Z           "evidence": [
2026-06-23T10:05:46.8869798Z             {
2026-06-23T10:05:46.8872680Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-23T10:05:46.8872815Z               "line": 250
2026-06-23T10:05:46.8872895Z             }
2026-06-23T10:05:46.8872985Z           ]
2026-06-23T10:05:46.8873071Z         },
2026-06-23T10:05:46.8873157Z         "impl": {
2026-06-23T10:05:46.8873401Z           "complete": true,
2026-06-23T10:05:46.8873486Z           "evidence": [
2026-06-23T10:05:46.8873571Z             {
2026-06-23T10:05:46.8873691Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.8873783Z               "line": 23
2026-06-23T10:05:46.8873871Z             },
2026-06-23T10:05:46.8873963Z             {
2026-06-23T10:05:46.8874098Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.8874186Z               "line": 922
2026-06-23T10:05:46.8874276Z             },
2026-06-23T10:05:46.8874357Z             {
2026-06-23T10:05:46.8874475Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.8874565Z               "line": 963
2026-06-23T10:05:46.8874650Z             },
2026-06-23T10:05:46.8874737Z             {
2026-06-23T10:05:46.8874842Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.8874936Z               "line": 1227
2026-06-23T10:05:46.8875018Z             },
2026-06-23T10:05:46.8875114Z             {
2026-06-23T10:05:46.8875218Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.8875309Z               "line": 32
2026-06-23T10:05:46.8875390Z             },
2026-06-23T10:05:46.8875471Z             {
2026-06-23T10:05:46.8875589Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.8875682Z               "line": 1243
2026-06-23T10:05:46.8875766Z             },
2026-06-23T10:05:46.8875852Z             {
2026-06-23T10:05:46.8875967Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.8876063Z               "line": 1964
2026-06-23T10:05:46.8876147Z             },
2026-06-23T10:05:46.8876233Z             {
2026-06-23T10:05:46.8876349Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.8876443Z               "line": 2251
2026-06-23T10:05:46.8876525Z             },
2026-06-23T10:05:46.8876597Z             {
2026-06-23T10:05:46.8876711Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-23T10:05:46.8876796Z               "line": 11
2026-06-23T10:05:46.8876881Z             },
2026-06-23T10:05:46.8876962Z             {
2026-06-23T10:05:46.8877080Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.8877169Z               "line": 153
2026-06-23T10:05:46.8877251Z             },
2026-06-23T10:05:46.8877338Z             {
2026-06-23T10:05:46.8877451Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.8877541Z               "line": 343
2026-06-23T10:05:46.8877628Z             },
2026-06-23T10:05:46.8877709Z             {
2026-06-23T10:05:46.8877822Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:46.8877910Z               "line": 13
2026-06-23T10:05:46.8877990Z             },
2026-06-23T10:05:46.8878076Z             {
2026-06-23T10:05:46.8878200Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:46.8878291Z               "line": 27
2026-06-23T10:05:46.8878371Z             },
2026-06-23T10:05:46.8878457Z             {
2026-06-23T10:05:46.8878568Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:46.8878667Z               "line": 147
2026-06-23T10:05:46.8878748Z             },
2026-06-23T10:05:46.8878829Z             {
2026-06-23T10:05:46.8879029Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:46.8879110Z               "line": 632
2026-06-23T10:05:46.8879325Z             },
2026-06-23T10:05:46.8879410Z             {
2026-06-23T10:05:46.8879531Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:46.8879616Z               "line": 853
2026-06-23T10:05:46.8879700Z             },
2026-06-23T10:05:46.8879781Z             {
2026-06-23T10:05:46.8879892Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:46.8879987Z               "line": 1000
2026-06-23T10:05:46.8880072Z             },
2026-06-23T10:05:46.8880158Z             {
2026-06-23T10:05:46.8880269Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:46.8880469Z               "line": 1089
2026-06-23T10:05:46.8880559Z             },
2026-06-23T10:05:46.8880640Z             {
2026-06-23T10:05:46.8880759Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:46.8880846Z               "line": 1211
2026-06-23T10:05:46.8880931Z             },
2026-06-23T10:05:46.8881006Z             {
2026-06-23T10:05:46.8881147Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-23T10:05:46.8881236Z               "line": 10
2026-06-23T10:05:46.8881317Z             }
2026-06-23T10:05:46.8881404Z           ]
2026-06-23T10:05:46.8881485Z         },
2026-06-23T10:05:46.8881574Z         "int": {
2026-06-23T10:05:46.8881660Z           "complete": true,
2026-06-23T10:05:46.8881752Z           "evidence": [
2026-06-23T10:05:46.8881837Z             {
2026-06-23T10:05:46.8881960Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-23T10:05:46.8882041Z               "line": 17
2026-06-23T10:05:46.8882122Z             },
2026-06-23T10:05:46.8882196Z             {
2026-06-23T10:05:46.8882324Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-23T10:05:46.8882415Z               "line": 90
2026-06-23T10:05:46.8882497Z             },
2026-06-23T10:05:46.8882572Z             {
2026-06-23T10:05:46.8882697Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-23T10:05:46.8882788Z               "line": 110
2026-06-23T10:05:46.8882873Z             },
2026-06-23T10:05:46.8882958Z             {
2026-06-23T10:05:46.8883083Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-23T10:05:46.8883188Z               "line": 186
2026-06-23T10:05:46.8883268Z             },
2026-06-23T10:05:46.8883355Z             {
2026-06-23T10:05:46.8883474Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-23T10:05:46.8883564Z               "line": 309
2026-06-23T10:05:46.8883646Z             },
2026-06-23T10:05:46.8883727Z             {
2026-06-23T10:05:46.8883850Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-23T10:05:46.8883946Z               "line": 128
2026-06-23T10:05:46.8884023Z             },
2026-06-23T10:05:46.8884112Z             {
2026-06-23T10:05:46.8884232Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-23T10:05:46.8884319Z               "line": 59
2026-06-23T10:05:46.8884413Z             }
2026-06-23T10:05:46.8884508Z           ]
2026-06-23T10:05:46.8884591Z         },
2026-06-23T10:05:46.8884681Z         "unit": {
2026-06-23T10:05:46.8884765Z           "complete": true,
2026-06-23T10:05:46.8884860Z           "evidence": [
2026-06-23T10:05:46.8884946Z             {
2026-06-23T10:05:46.8885063Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-23T10:05:46.8885149Z               "line": 62
2026-06-23T10:05:46.8885225Z             },
2026-06-23T10:05:46.8885311Z             {
2026-06-23T10:05:46.8885425Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-23T10:05:46.8885510Z               "line": 76
2026-06-23T10:05:46.8885598Z             },
2026-06-23T10:05:46.8885683Z             {
2026-06-23T10:05:46.8885807Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-23T10:05:46.8885888Z               "line": 88
2026-06-23T10:05:46.8885974Z             },
2026-06-23T10:05:46.8886060Z             {
2026-06-23T10:05:46.8886169Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T10:05:46.8886326Z               "line": 347
2026-06-23T10:05:46.8886412Z             },
2026-06-23T10:05:46.8886488Z             {
2026-06-23T10:05:46.8886599Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:46.8886693Z               "line": 937
2026-06-23T10:05:46.8886775Z             },
2026-06-23T10:05:46.8886871Z             {
2026-06-23T10:05:46.8886984Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:46.8887080Z               "line": 945
2026-06-23T10:05:46.8887157Z             },
2026-06-23T10:05:46.8887238Z             {
2026-06-23T10:05:46.8887422Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:46.8887513Z               "line": 962
2026-06-23T10:05:46.8887593Z             },
2026-06-23T10:05:46.8887673Z             {
2026-06-23T10:05:46.8887782Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:46.8887868Z               "line": 1071
2026-06-23T10:05:46.8887950Z             },
2026-06-23T10:05:46.8888039Z             {
2026-06-23T10:05:46.8888155Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:46.8888250Z               "line": 1282
2026-06-23T10:05:46.8888335Z             },
2026-06-23T10:05:46.8888421Z             {
2026-06-23T10:05:46.8888541Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:46.8888627Z               "line": 1294
2026-06-23T10:05:46.8888711Z             },
2026-06-23T10:05:46.8888794Z             {
2026-06-23T10:05:46.8888917Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-23T10:05:46.8889075Z               "line": 110
2026-06-23T10:05:46.8889156Z             },
2026-06-23T10:05:46.8889241Z             {
2026-06-23T10:05:46.8889351Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-23T10:05:46.8889438Z               "line": 147
2026-06-23T10:05:46.8889523Z             }
2026-06-23T10:05:46.8889604Z           ]
2026-06-23T10:05:46.8889690Z         }
2026-06-23T10:05:46.8889767Z       }
2026-06-23T10:05:46.8889856Z     },
2026-06-23T10:05:46.8889933Z     {
2026-06-23T10:05:46.8890034Z       "id": "REQ-DAEMON-3",
2026-06-23T10:05:46.8890190Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-23T10:05:46.8890284Z       "requiredStages": [
2026-06-23T10:05:46.8890375Z         "impl",
2026-06-23T10:05:46.8890448Z         "unit",
2026-06-23T10:05:46.8890533Z         "int"
2026-06-23T10:05:46.8890613Z       ],
2026-06-23T10:05:46.8890705Z       "stages": {
2026-06-23T10:05:46.8890781Z         "doc": {
2026-06-23T10:05:46.8890881Z           "complete": false,
2026-06-23T10:05:46.8890981Z           "evidence": []
2026-06-23T10:05:46.8891063Z         },
2026-06-23T10:05:46.8891153Z         "impl": {
2026-06-23T10:05:46.8891238Z           "complete": true,
2026-06-23T10:05:46.8891314Z           "evidence": [
2026-06-23T10:05:46.8891401Z             {
2026-06-23T10:05:46.8891520Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.8891600Z               "line": 14
2026-06-23T10:05:46.8891673Z             },
2026-06-23T10:05:46.8891759Z             {
2026-06-23T10:05:46.8891867Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-23T10:05:46.8891954Z               "line": 11
2026-06-23T10:05:46.8892036Z             },
2026-06-23T10:05:46.8892125Z             {
2026-06-23T10:05:46.8892225Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T10:05:46.8892308Z               "line": 305
2026-06-23T10:05:46.8892388Z             },
2026-06-23T10:05:46.8892472Z             {
2026-06-23T10:05:46.8892581Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8892663Z               "line": 2310
2026-06-23T10:05:46.8892748Z             },
2026-06-23T10:05:46.8892832Z             {
2026-06-23T10:05:46.8892928Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8893014Z               "line": 4890
2026-06-23T10:05:46.8893095Z             },
2026-06-23T10:05:46.8893185Z             {
2026-06-23T10:05:46.8893285Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8893475Z               "line": 4911
2026-06-23T10:05:46.8893552Z             }
2026-06-23T10:05:46.8893639Z           ]
2026-06-23T10:05:46.8893729Z         },
2026-06-23T10:05:46.8893804Z         "int": {
2026-06-23T10:05:46.8893906Z           "complete": true,
2026-06-23T10:05:46.8893996Z           "evidence": [
2026-06-23T10:05:46.8894081Z             {
2026-06-23T10:05:46.8894206Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T10:05:46.8894297Z               "line": 49
2026-06-23T10:05:46.8894378Z             },
2026-06-23T10:05:46.8894559Z             {
2026-06-23T10:05:46.8894677Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T10:05:46.8894768Z               "line": 487
2026-06-23T10:05:46.8894855Z             }
2026-06-23T10:05:46.8894941Z           ]
2026-06-23T10:05:46.8895011Z         },
2026-06-23T10:05:46.8895097Z         "unit": {
2026-06-23T10:05:46.8895184Z           "complete": true,
2026-06-23T10:05:46.8895279Z           "evidence": [
2026-06-23T10:05:46.8895363Z             {
2026-06-23T10:05:46.8895478Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.8895559Z               "line": 1553
2026-06-23T10:05:46.8895642Z             },
2026-06-23T10:05:46.8895733Z             {
2026-06-23T10:05:46.8895838Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8895939Z               "line": 12253
2026-06-23T10:05:46.8896023Z             }
2026-06-23T10:05:46.8896104Z           ]
2026-06-23T10:05:46.8896191Z         }
2026-06-23T10:05:46.8896272Z       }
2026-06-23T10:05:46.8896367Z     },
2026-06-23T10:05:46.8896448Z     {
2026-06-23T10:05:46.8896534Z       "id": "REQ-DAEMON-4",
2026-06-23T10:05:46.8896652Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-23T10:05:46.8896739Z       "requiredStages": [
2026-06-23T10:05:46.8896830Z         "impl",
2026-06-23T10:05:46.8896915Z         "unit",
2026-06-23T10:05:46.8897001Z         "int"
2026-06-23T10:05:46.8897092Z       ],
2026-06-23T10:05:46.8897178Z       "stages": {
2026-06-23T10:05:46.8897253Z         "doc": {
2026-06-23T10:05:46.8897358Z           "complete": false,
2026-06-23T10:05:46.8897446Z           "evidence": []
2026-06-23T10:05:46.8897530Z         },
2026-06-23T10:05:46.8897616Z         "impl": {
2026-06-23T10:05:46.8897708Z           "complete": true,
2026-06-23T10:05:46.8897794Z           "evidence": [
2026-06-23T10:05:46.8897873Z             {
2026-06-23T10:05:46.8897996Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8898087Z               "line": 675
2026-06-23T10:05:46.8898176Z             },
2026-06-23T10:05:46.8898266Z             {
2026-06-23T10:05:46.8898376Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8898462Z               "line": 740
2026-06-23T10:05:46.8898543Z             },
2026-06-23T10:05:46.8898628Z             {
2026-06-23T10:05:46.8898748Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8898839Z               "line": 762
2026-06-23T10:05:46.8898919Z             }
2026-06-23T10:05:46.8899096Z           ]
2026-06-23T10:05:46.8899187Z         },
2026-06-23T10:05:46.8899272Z         "int": {
2026-06-23T10:05:46.8899359Z           "complete": true,
2026-06-23T10:05:46.8899449Z           "evidence": [
2026-06-23T10:05:46.8899530Z             {
2026-06-23T10:05:46.8899654Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-23T10:05:46.8899740Z               "line": 42
2026-06-23T10:05:46.8899825Z             }
2026-06-23T10:05:46.8899906Z           ]
2026-06-23T10:05:46.8900003Z         },
2026-06-23T10:05:46.8900087Z         "unit": {
2026-06-23T10:05:46.8900174Z           "complete": true,
2026-06-23T10:05:46.8900265Z           "evidence": [
2026-06-23T10:05:46.8900341Z             {
2026-06-23T10:05:46.8900459Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T10:05:46.8900550Z               "line": 428
2026-06-23T10:05:46.8900628Z             },
2026-06-23T10:05:46.8900811Z             {
2026-06-23T10:05:46.8900925Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8901017Z               "line": 1168
2026-06-23T10:05:46.8901102Z             },
2026-06-23T10:05:46.8901187Z             {
2026-06-23T10:05:46.8901308Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8901394Z               "line": 1238
2026-06-23T10:05:46.8901474Z             },
2026-06-23T10:05:46.8901555Z             {
2026-06-23T10:05:46.8901675Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8901870Z               "line": 1268
2026-06-23T10:05:46.8901956Z             },
2026-06-23T10:05:46.8902041Z             {
2026-06-23T10:05:46.8902160Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.8902247Z               "line": 1301
2026-06-23T10:05:46.8902328Z             }
2026-06-23T10:05:46.8902414Z           ]
2026-06-23T10:05:46.8902500Z         }
2026-06-23T10:05:46.8902591Z       }
2026-06-23T10:05:46.8902666Z     },
2026-06-23T10:05:46.8902752Z     {
2026-06-23T10:05:46.8902848Z       "id": "REQ-DAEMON-5",
2026-06-23T10:05:46.8904166Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-23T10:05:46.8904275Z       "requiredStages": [
2026-06-23T10:05:46.8904360Z         "impl",
2026-06-23T10:05:46.8904447Z         "unit"
2026-06-23T10:05:46.8904533Z       ],
2026-06-23T10:05:46.8904618Z       "stages": {
2026-06-23T10:05:46.8904703Z         "doc": {
2026-06-23T10:05:46.8904795Z           "complete": false,
2026-06-23T10:05:46.8904885Z           "evidence": []
2026-06-23T10:05:46.8904971Z         },
2026-06-23T10:05:46.8905052Z         "impl": {
2026-06-23T10:05:46.8905143Z           "complete": true,
2026-06-23T10:05:46.8905233Z           "evidence": [
2026-06-23T10:05:46.8905318Z             {
2026-06-23T10:05:46.8905444Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.8905534Z               "line": 476
2026-06-23T10:05:46.8905619Z             },
2026-06-23T10:05:46.8905696Z             {
2026-06-23T10:05:46.8905821Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.8905904Z               "line": 769
2026-06-23T10:05:46.8905994Z             },
2026-06-23T10:05:46.8906080Z             {
2026-06-23T10:05:46.8906203Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.8906288Z               "line": 782
2026-06-23T10:05:46.8906370Z             },
2026-06-23T10:05:46.8906455Z             {
2026-06-23T10:05:46.8906569Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.8906669Z               "line": 800
2026-06-23T10:05:46.8906752Z             },
2026-06-23T10:05:46.8906837Z             {
2026-06-23T10:05:46.8906960Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.8907052Z               "line": 841
2026-06-23T10:05:46.8907137Z             }
2026-06-23T10:05:46.8907217Z           ]
2026-06-23T10:05:46.8907299Z         },
2026-06-23T10:05:46.8907381Z         "int": {
2026-06-23T10:05:46.8907480Z           "complete": false,
2026-06-23T10:05:46.8907566Z           "evidence": []
2026-06-23T10:05:46.8907653Z         },
2026-06-23T10:05:46.8907743Z         "unit": {
2026-06-23T10:05:46.8907838Z           "complete": true,
2026-06-23T10:05:46.8907928Z           "evidence": [
2026-06-23T10:05:46.8908011Z             {
2026-06-23T10:05:46.8908133Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.8908219Z               "line": 1189
2026-06-23T10:05:46.8908292Z             },
2026-06-23T10:05:46.8908377Z             {
2026-06-23T10:05:46.8908575Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.8908662Z               "line": 1213
2026-06-23T10:05:46.8908741Z             },
2026-06-23T10:05:46.8908822Z             {
2026-06-23T10:05:46.8908931Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.8909107Z               "line": 1239
2026-06-23T10:05:46.8909197Z             }
2026-06-23T10:05:46.8909280Z           ]
2026-06-23T10:05:46.8909365Z         }
2026-06-23T10:05:46.8909450Z       }
2026-06-23T10:05:46.8909541Z     },
2026-06-23T10:05:46.8909628Z     {
2026-06-23T10:05:46.8909827Z       "id": "REQ-DAEMON-6",
2026-06-23T10:05:46.8911820Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-23T10:05:46.8911935Z       "requiredStages": [
2026-06-23T10:05:46.8912020Z         "impl",
2026-06-23T10:05:46.8912111Z         "unit"
2026-06-23T10:05:46.8912197Z       ],
2026-06-23T10:05:46.8912288Z       "stages": {
2026-06-23T10:05:46.8912372Z         "doc": {
2026-06-23T10:05:46.8912454Z           "complete": false,
2026-06-23T10:05:46.8912554Z           "evidence": []
2026-06-23T10:05:46.8912640Z         },
2026-06-23T10:05:46.8912735Z         "impl": {
2026-06-23T10:05:46.8912822Z           "complete": true,
2026-06-23T10:05:46.8912917Z           "evidence": [
2026-06-23T10:05:46.8913002Z             {
2026-06-23T10:05:46.8913123Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.8913208Z               "line": 495
2026-06-23T10:05:46.8913293Z             },
2026-06-23T10:05:46.8913384Z             {
2026-06-23T10:05:46.8913503Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.8913598Z               "line": 526
2026-06-23T10:05:46.8913683Z             },
2026-06-23T10:05:46.8913769Z             {
2026-06-23T10:05:46.8913891Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T10:05:46.8913981Z               "line": 55
2026-06-23T10:05:46.8914072Z             },
2026-06-23T10:05:46.8914153Z             {
2026-06-23T10:05:46.8914281Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T10:05:46.8914372Z               "line": 70
2026-06-23T10:05:46.8914459Z             },
2026-06-23T10:05:46.8914544Z             {
2026-06-23T10:05:46.8914643Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8914740Z               "line": 2374
2026-06-23T10:05:46.8914820Z             },
2026-06-23T10:05:46.8914901Z             {
2026-06-23T10:05:46.8915007Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8915088Z               "line": 2400
2026-06-23T10:05:46.8915174Z             }
2026-06-23T10:05:46.8915258Z           ]
2026-06-23T10:05:46.8915351Z         },
2026-06-23T10:05:46.8915436Z         "int": {
2026-06-23T10:05:46.8915526Z           "complete": false,
2026-06-23T10:05:46.8915612Z           "evidence": []
2026-06-23T10:05:46.8915699Z         },
2026-06-23T10:05:46.8915784Z         "unit": {
2026-06-23T10:05:46.8915874Z           "complete": true,
2026-06-23T10:05:46.8915961Z           "evidence": [
2026-06-23T10:05:46.8916042Z             {
2026-06-23T10:05:46.8916160Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T10:05:46.8916252Z               "line": 288
2026-06-23T10:05:46.8916333Z             },
2026-06-23T10:05:46.8916418Z             {
2026-06-23T10:05:46.8916536Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T10:05:46.8916735Z               "line": 299
2026-06-23T10:05:46.8916819Z             },
2026-06-23T10:05:46.8916895Z             {
2026-06-23T10:05:46.8917011Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T10:05:46.8917097Z               "line": 325
2026-06-23T10:05:46.8917182Z             },
2026-06-23T10:05:46.8917259Z             {
2026-06-23T10:05:46.8917378Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T10:05:46.8917458Z               "line": 351
2026-06-23T10:05:46.8917554Z             }
2026-06-23T10:05:46.8917641Z           ]
2026-06-23T10:05:46.8917727Z         }
2026-06-23T10:05:46.8917893Z       }
2026-06-23T10:05:46.8917975Z     },
2026-06-23T10:05:46.8918060Z     {
2026-06-23T10:05:46.8918145Z       "id": "REQ-DAEMON-7",
2026-06-23T10:05:46.8919582Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-23T10:05:46.8919696Z       "requiredStages": [
2026-06-23T10:05:46.8919782Z         "impl",
2026-06-23T10:05:46.8919860Z         "unit"
2026-06-23T10:05:46.8919935Z       ],
2026-06-23T10:05:46.8920020Z       "stages": {
2026-06-23T10:05:46.8920101Z         "doc": {
2026-06-23T10:05:46.8920193Z           "complete": false,
2026-06-23T10:05:46.8920283Z           "evidence": []
2026-06-23T10:05:46.8920368Z         },
2026-06-23T10:05:46.8920460Z         "impl": {
2026-06-23T10:05:46.8920555Z           "complete": true,
2026-06-23T10:05:46.8920640Z           "evidence": [
2026-06-23T10:05:46.8920731Z             {
2026-06-23T10:05:46.8920846Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.8920932Z               "line": 545
2026-06-23T10:05:46.8921022Z             },
2026-06-23T10:05:46.8921109Z             {
2026-06-23T10:05:46.8921227Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T10:05:46.8921317Z               "line": 610
2026-06-23T10:05:46.8921404Z             },
2026-06-23T10:05:46.8921485Z             {
2026-06-23T10:05:46.8921613Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T10:05:46.8921700Z               "line": 89
2026-06-23T10:05:46.8921782Z             },
2026-06-23T10:05:46.8921865Z             {
2026-06-23T10:05:46.8921974Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8922080Z               "line": 2311
2026-06-23T10:05:46.8922162Z             }
2026-06-23T10:05:46.8922242Z           ]
2026-06-23T10:05:46.8922327Z         },
2026-06-23T10:05:46.8922414Z         "int": {
2026-06-23T10:05:46.8922500Z           "complete": false,
2026-06-23T10:05:46.8922594Z           "evidence": []
2026-06-23T10:05:46.8922676Z         },
2026-06-23T10:05:46.8922771Z         "unit": {
2026-06-23T10:05:46.8922862Z           "complete": true,
2026-06-23T10:05:46.8922942Z           "evidence": [
2026-06-23T10:05:46.8923024Z             {
2026-06-23T10:05:46.8923143Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T10:05:46.8923228Z               "line": 314
2026-06-23T10:05:46.8923305Z             },
2026-06-23T10:05:46.8923382Z             {
2026-06-23T10:05:46.8923491Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8923577Z               "line": 9496
2026-06-23T10:05:46.8923664Z             }
2026-06-23T10:05:46.8923744Z           ]
2026-06-23T10:05:46.8923829Z         }
2026-06-23T10:05:46.8923906Z       }
2026-06-23T10:05:46.8923988Z     },
2026-06-23T10:05:46.8924073Z     {
2026-06-23T10:05:46.8924163Z       "id": "REQ-DAEMON-8",
2026-06-23T10:05:46.8925094Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-23T10:05:46.8925310Z       "requiredStages": [
2026-06-23T10:05:46.8925395Z         "impl",
2026-06-23T10:05:46.8925485Z         "unit"
2026-06-23T10:05:46.8925562Z       ],
2026-06-23T10:05:46.8925648Z       "stages": {
2026-06-23T10:05:46.8925734Z         "doc": {
2026-06-23T10:05:46.8925828Z           "complete": false,
2026-06-23T10:05:46.8925911Z           "evidence": []
2026-06-23T10:05:46.8925996Z         },
2026-06-23T10:05:46.8926086Z         "impl": {
2026-06-23T10:05:46.8926278Z           "complete": true,
2026-06-23T10:05:46.8926372Z           "evidence": [
2026-06-23T10:05:46.8926458Z             {
2026-06-23T10:05:46.8926578Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.8926677Z               "line": 445
2026-06-23T10:05:46.8926759Z             },
2026-06-23T10:05:46.8926850Z             {
2026-06-23T10:05:46.8926973Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T10:05:46.8927067Z               "line": 56
2026-06-23T10:05:46.8927148Z             }
2026-06-23T10:05:46.8927234Z           ]
2026-06-23T10:05:46.8927323Z         },
2026-06-23T10:05:46.8927408Z         "int": {
2026-06-23T10:05:46.8927509Z           "complete": false,
2026-06-23T10:05:46.8927590Z           "evidence": []
2026-06-23T10:05:46.8927680Z         },
2026-06-23T10:05:46.8927751Z         "unit": {
2026-06-23T10:05:46.8927848Z           "complete": true,
2026-06-23T10:05:46.8927938Z           "evidence": [
2026-06-23T10:05:46.8928023Z             {
2026-06-23T10:05:46.8928134Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T10:05:46.8928220Z               "line": 288
2026-06-23T10:05:46.8928301Z             },
2026-06-23T10:05:46.8928385Z             {
2026-06-23T10:05:46.8928506Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T10:05:46.8928595Z               "line": 325
2026-06-23T10:05:46.8928686Z             }
2026-06-23T10:05:46.8928768Z           ]
2026-06-23T10:05:46.8928854Z         }
2026-06-23T10:05:46.8928933Z       }
2026-06-23T10:05:46.8929107Z     },
2026-06-23T10:05:46.8929188Z     {
2026-06-23T10:05:46.8929287Z       "id": "REQ-DAEMON-9",
2026-06-23T10:05:46.8931553Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-23T10:05:46.8931664Z       "requiredStages": [
2026-06-23T10:05:46.8931749Z         "impl",
2026-06-23T10:05:46.8931830Z         "unit"
2026-06-23T10:05:46.8931911Z       ],
2026-06-23T10:05:46.8932003Z       "stages": {
2026-06-23T10:05:46.8932088Z         "doc": {
2026-06-23T10:05:46.8932183Z           "complete": false,
2026-06-23T10:05:46.8932270Z           "evidence": []
2026-06-23T10:05:46.8932351Z         },
2026-06-23T10:05:46.8932435Z         "impl": {
2026-06-23T10:05:46.8932525Z           "complete": true,
2026-06-23T10:05:46.8932630Z           "evidence": [
2026-06-23T10:05:46.8932717Z             {
2026-06-23T10:05:46.8932849Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.8932931Z               "line": 276
2026-06-23T10:05:46.8933017Z             },
2026-06-23T10:05:46.8933102Z             {
2026-06-23T10:05:46.8933226Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.8933422Z               "line": 1294
2026-06-23T10:05:46.8933507Z             },
2026-06-23T10:05:46.8933599Z             {
2026-06-23T10:05:46.8933708Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.8933793Z               "line": 197
2026-06-23T10:05:46.8933880Z             },
2026-06-23T10:05:46.8933966Z             {
2026-06-23T10:05:46.8934075Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.8934165Z               "line": 344
2026-06-23T10:05:46.8934253Z             },
2026-06-23T10:05:46.8934332Z             {
2026-06-23T10:05:46.8934563Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.8934656Z               "line": 381
2026-06-23T10:05:46.8934746Z             },
2026-06-23T10:05:46.8934832Z             {
2026-06-23T10:05:46.8934932Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8935020Z               "line": 2429
2026-06-23T10:05:46.8935101Z             }
2026-06-23T10:05:46.8935182Z           ]
2026-06-23T10:05:46.8935260Z         },
2026-06-23T10:05:46.8935354Z         "int": {
2026-06-23T10:05:46.8935449Z           "complete": false,
2026-06-23T10:05:46.8935541Z           "evidence": []
2026-06-23T10:05:46.8935617Z         },
2026-06-23T10:05:46.8935702Z         "unit": {
2026-06-23T10:05:46.8935802Z           "complete": true,
2026-06-23T10:05:46.8935889Z           "evidence": [
2026-06-23T10:05:46.8935974Z             {
2026-06-23T10:05:46.8936088Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.8936175Z               "line": 1158
2026-06-23T10:05:46.8936261Z             },
2026-06-23T10:05:46.8936341Z             {
2026-06-23T10:05:46.8936446Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8936537Z               "line": 12118
2026-06-23T10:05:46.8936627Z             }
2026-06-23T10:05:46.8936717Z           ]
2026-06-23T10:05:46.8936800Z         }
2026-06-23T10:05:46.8936889Z       }
2026-06-23T10:05:46.8936961Z     },
2026-06-23T10:05:46.8937042Z     {
2026-06-23T10:05:46.8937134Z       "id": "REQ-DOCS-1",
2026-06-23T10:05:46.8937338Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-23T10:05:46.8937440Z       "requiredStages": [
2026-06-23T10:05:46.8937524Z         "doc",
2026-06-23T10:05:46.8937618Z         "impl"
2026-06-23T10:05:46.8937699Z       ],
2026-06-23T10:05:46.8937799Z       "stages": {
2026-06-23T10:05:46.8937883Z         "doc": {
2026-06-23T10:05:46.8937973Z           "complete": true,
2026-06-23T10:05:46.8938064Z           "evidence": [
2026-06-23T10:05:46.8938146Z             {
2026-06-23T10:05:46.8938255Z               "path": "docs-site/src/index.md",
2026-06-23T10:05:46.8938345Z               "line": 50
2026-06-23T10:05:46.8938427Z             }
2026-06-23T10:05:46.8938513Z           ]
2026-06-23T10:05:46.8938593Z         },
2026-06-23T10:05:46.8938679Z         "impl": {
2026-06-23T10:05:46.8938766Z           "complete": true,
2026-06-23T10:05:46.8938856Z           "evidence": [
2026-06-23T10:05:46.8938940Z             {
2026-06-23T10:05:46.8939156Z               "path": ".github/workflows/docs-publish.yml",
2026-06-23T10:05:46.8939241Z               "line": 12
2026-06-23T10:05:46.8939328Z             },
2026-06-23T10:05:46.8939414Z             {
2026-06-23T10:05:46.8939528Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:46.8939609Z               "line": 14
2026-06-23T10:05:46.8939695Z             }
2026-06-23T10:05:46.8939776Z           ]
2026-06-23T10:05:46.8939862Z         },
2026-06-23T10:05:46.8939948Z         "int": {
2026-06-23T10:05:46.8940053Z           "complete": false,
2026-06-23T10:05:46.8940133Z           "evidence": []
2026-06-23T10:05:46.8940218Z         },
2026-06-23T10:05:46.8940299Z         "unit": {
2026-06-23T10:05:46.8940403Z           "complete": false,
2026-06-23T10:05:46.8940483Z           "evidence": []
2026-06-23T10:05:46.8940573Z         }
2026-06-23T10:05:46.8940654Z       }
2026-06-23T10:05:46.8940737Z     },
2026-06-23T10:05:46.8940931Z     {
2026-06-23T10:05:46.8941022Z       "id": "REQ-DOCS-2",
2026-06-23T10:05:46.8941188Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-23T10:05:46.8941285Z       "requiredStages": [
2026-06-23T10:05:46.8941365Z         "doc",
2026-06-23T10:05:46.8941451Z         "int"
2026-06-23T10:05:46.8941527Z       ],
2026-06-23T10:05:46.8941618Z       "stages": {
2026-06-23T10:05:46.8941699Z         "doc": {
2026-06-23T10:05:46.8941798Z           "complete": true,
2026-06-23T10:05:46.8945175Z           "evidence": [
2026-06-23T10:05:46.8945283Z             {
2026-06-23T10:05:46.8945624Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-23T10:05:46.8945704Z               "line": 3
2026-06-23T10:05:46.8945791Z             },
2026-06-23T10:05:46.8945872Z             {
2026-06-23T10:05:46.8946009Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-23T10:05:46.8946101Z               "line": 3
2026-06-23T10:05:46.8946201Z             },
2026-06-23T10:05:46.8946286Z             {
2026-06-23T10:05:46.8946416Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-23T10:05:46.8946506Z               "line": 3
2026-06-23T10:05:46.8946591Z             }
2026-06-23T10:05:46.8946678Z           ]
2026-06-23T10:05:46.8946754Z         },
2026-06-23T10:05:46.8946844Z         "impl": {
2026-06-23T10:05:46.8946939Z           "complete": false,
2026-06-23T10:05:46.8947021Z           "evidence": []
2026-06-23T10:05:46.8947106Z         },
2026-06-23T10:05:46.8947192Z         "int": {
2026-06-23T10:05:46.8947287Z           "complete": true,
2026-06-23T10:05:46.8947379Z           "evidence": [
2026-06-23T10:05:46.8947459Z             {
2026-06-23T10:05:46.8947593Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-23T10:05:46.8947680Z               "line": 14
2026-06-23T10:05:46.8947764Z             }
2026-06-23T10:05:46.8947850Z           ]
2026-06-23T10:05:46.8947932Z         },
2026-06-23T10:05:46.8948019Z         "unit": {
2026-06-23T10:05:46.8948112Z           "complete": false,
2026-06-23T10:05:46.8948202Z           "evidence": []
2026-06-23T10:05:46.8948287Z         }
2026-06-23T10:05:46.8948368Z       }
2026-06-23T10:05:46.8948452Z     },
2026-06-23T10:05:46.8948537Z     {
2026-06-23T10:05:46.8948634Z       "id": "REQ-DOCS-3",
2026-06-23T10:05:46.8948866Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-23T10:05:46.8949054Z       "requiredStages": [
2026-06-23T10:05:46.8949134Z         "doc"
2026-06-23T10:05:46.8949225Z       ],
2026-06-23T10:05:46.8949344Z       "stages": {
2026-06-23T10:05:46.8949525Z         "doc": {
2026-06-23T10:05:46.8949621Z           "complete": true,
2026-06-23T10:05:46.8949711Z           "evidence": [
2026-06-23T10:05:46.8949797Z             {
2026-06-23T10:05:46.8949913Z               "path": "docs-site/src/index.md",
2026-06-23T10:05:46.8950002Z               "line": 42
2026-06-23T10:05:46.8950088Z             }
2026-06-23T10:05:46.8950169Z           ]
2026-06-23T10:05:46.8950256Z         },
2026-06-23T10:05:46.8950345Z         "impl": {
2026-06-23T10:05:46.8950441Z           "complete": false,
2026-06-23T10:05:46.8950528Z           "evidence": []
2026-06-23T10:05:46.8950613Z         },
2026-06-23T10:05:46.8950698Z         "int": {
2026-06-23T10:05:46.8950783Z           "complete": false,
2026-06-23T10:05:46.8950869Z           "evidence": []
2026-06-23T10:05:46.8950949Z         },
2026-06-23T10:05:46.8951034Z         "unit": {
2026-06-23T10:05:46.8951119Z           "complete": false,
2026-06-23T10:05:46.8951205Z           "evidence": []
2026-06-23T10:05:46.8951292Z         }
2026-06-23T10:05:46.8951377Z       }
2026-06-23T10:05:46.8951458Z     },
2026-06-23T10:05:46.8951544Z     {
2026-06-23T10:05:46.8951635Z       "id": "REQ-DOCS-4",
2026-06-23T10:05:46.8951831Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-23T10:05:46.8951926Z       "requiredStages": [
2026-06-23T10:05:46.8952006Z         "doc",
2026-06-23T10:05:46.8952212Z         "impl",
2026-06-23T10:05:46.8952297Z         "unit"
2026-06-23T10:05:46.8952382Z       ],
2026-06-23T10:05:46.8952479Z       "stages": {
2026-06-23T10:05:46.8952560Z         "doc": {
2026-06-23T10:05:46.8952650Z           "complete": true,
2026-06-23T10:05:46.8952741Z           "evidence": [
2026-06-23T10:05:46.8952827Z             {
2026-06-23T10:05:46.8952940Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-23T10:05:46.8953031Z               "line": 35
2026-06-23T10:05:46.8953118Z             }
2026-06-23T10:05:46.8953199Z           ]
2026-06-23T10:05:46.8953289Z         },
2026-06-23T10:05:46.8953466Z         "impl": {
2026-06-23T10:05:46.8953551Z           "complete": true,
2026-06-23T10:05:46.8953641Z           "evidence": [
2026-06-23T10:05:46.8953722Z             {
2026-06-23T10:05:46.8953852Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:46.8953936Z               "line": 793
2026-06-23T10:05:46.8954021Z             },
2026-06-23T10:05:46.8954114Z             {
2026-06-23T10:05:46.8954223Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:46.8954308Z               "line": 15
2026-06-23T10:05:46.8954400Z             }
2026-06-23T10:05:46.8954485Z           ]
2026-06-23T10:05:46.8954566Z         },
2026-06-23T10:05:46.8954656Z         "int": {
2026-06-23T10:05:46.8954743Z           "complete": false,
2026-06-23T10:05:46.8954828Z           "evidence": []
2026-06-23T10:05:46.8954908Z         },
2026-06-23T10:05:46.8955000Z         "unit": {
2026-06-23T10:05:46.8955096Z           "complete": true,
2026-06-23T10:05:46.8955191Z           "evidence": [
2026-06-23T10:05:46.8955276Z             {
2026-06-23T10:05:46.8955392Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:46.8955485Z               "line": 1729
2026-06-23T10:05:46.8955557Z             }
2026-06-23T10:05:46.8955639Z           ]
2026-06-23T10:05:46.8955721Z         }
2026-06-23T10:05:46.8955805Z       }
2026-06-23T10:05:46.8955890Z     },
2026-06-23T10:05:46.8955981Z     {
2026-06-23T10:05:46.8956071Z       "id": "REQ-DOCS-5",
2026-06-23T10:05:46.8956249Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-23T10:05:46.8956351Z       "requiredStages": [
2026-06-23T10:05:46.8956442Z         "impl",
2026-06-23T10:05:46.8956522Z         "int"
2026-06-23T10:05:46.8956613Z       ],
2026-06-23T10:05:46.8956699Z       "stages": {
2026-06-23T10:05:46.8956780Z         "doc": {
2026-06-23T10:05:46.8956870Z           "complete": false,
2026-06-23T10:05:46.8956967Z           "evidence": []
2026-06-23T10:05:46.8957056Z         },
2026-06-23T10:05:46.8957146Z         "impl": {
2026-06-23T10:05:46.8957238Z           "complete": true,
2026-06-23T10:05:46.8957329Z           "evidence": [
2026-06-23T10:05:46.8957414Z             {
2026-06-23T10:05:46.8957533Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:46.8957610Z               "line": 794
2026-06-23T10:05:46.8957695Z             },
2026-06-23T10:05:46.8957781Z             {
2026-06-23T10:05:46.8957877Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:46.8957968Z               "line": 114
2026-06-23T10:05:46.8958052Z             }
2026-06-23T10:05:46.8958134Z           ]
2026-06-23T10:05:46.8958216Z         },
2026-06-23T10:05:46.8958301Z         "int": {
2026-06-23T10:05:46.8958391Z           "complete": true,
2026-06-23T10:05:46.8958473Z           "evidence": [
2026-06-23T10:05:46.8958560Z             {
2026-06-23T10:05:46.8958667Z               "path": ".github/workflows/ci.yml",
2026-06-23T10:05:46.8958757Z               "line": 198
2026-06-23T10:05:46.8958838Z             },
2026-06-23T10:05:46.8958924Z             {
2026-06-23T10:05:46.8959136Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:46.8959223Z               "line": 1766
2026-06-23T10:05:46.8959299Z             }
2026-06-23T10:05:46.8959384Z           ]
2026-06-23T10:05:46.8959470Z         },
2026-06-23T10:05:46.8959557Z         "unit": {
2026-06-23T10:05:46.8959756Z           "complete": false,
2026-06-23T10:05:46.8959843Z           "evidence": []
2026-06-23T10:05:46.8959933Z         }
2026-06-23T10:05:46.8960013Z       }
2026-06-23T10:05:46.8960100Z     },
2026-06-23T10:05:46.8960182Z     {
2026-06-23T10:05:46.8960271Z       "id": "REQ-DOCS-6",
2026-06-23T10:05:46.8960596Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-23T10:05:46.8960686Z       "requiredStages": [
2026-06-23T10:05:46.8960778Z         "impl",
2026-06-23T10:05:46.8960863Z         "unit",
2026-06-23T10:05:46.8961044Z         "int"
2026-06-23T10:05:46.8961127Z       ],
2026-06-23T10:05:46.8961211Z       "stages": {
2026-06-23T10:05:46.8961296Z         "doc": {
2026-06-23T10:05:46.8961386Z           "complete": true,
2026-06-23T10:05:46.8961472Z           "evidence": [
2026-06-23T10:05:46.8961556Z             {
2026-06-23T10:05:46.8961684Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-23T10:05:46.8961780Z               "line": 4
2026-06-23T10:05:46.8961862Z             }
2026-06-23T10:05:46.8961946Z           ]
2026-06-23T10:05:46.8962032Z         },
2026-06-23T10:05:46.8962119Z         "impl": {
2026-06-23T10:05:46.8962205Z           "complete": true,
2026-06-23T10:05:46.8962289Z           "evidence": [
2026-06-23T10:05:46.8962376Z             {
2026-06-23T10:05:46.8962476Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8962571Z               "line": 5895
2026-06-23T10:05:46.8962652Z             }
2026-06-23T10:05:46.8962738Z           ]
2026-06-23T10:05:46.8962824Z         },
2026-06-23T10:05:46.8962905Z         "int": {
2026-06-23T10:05:46.8962996Z           "complete": true,
2026-06-23T10:05:46.8963082Z           "evidence": [
2026-06-23T10:05:46.8963162Z             {
2026-06-23T10:05:46.8963281Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-23T10:05:46.8963373Z               "line": 39
2026-06-23T10:05:46.8963453Z             }
2026-06-23T10:05:46.8963530Z           ]
2026-06-23T10:05:46.8963616Z         },
2026-06-23T10:05:46.8963702Z         "unit": {
2026-06-23T10:05:46.8963796Z           "complete": true,
2026-06-23T10:05:46.8963878Z           "evidence": [
2026-06-23T10:05:46.8963965Z             {
2026-06-23T10:05:46.8964074Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8964158Z               "line": 12280
2026-06-23T10:05:46.8964243Z             }
2026-06-23T10:05:46.8964329Z           ]
2026-06-23T10:05:46.8964412Z         }
2026-06-23T10:05:46.8964496Z       }
2026-06-23T10:05:46.8964577Z     },
2026-06-23T10:05:46.8964659Z     {
2026-06-23T10:05:46.8964769Z       "id": "REQ-DOCS-NO-INTERNAL-CODES",
2026-06-23T10:05:46.8966379Z       "title": "Public CLI --help (the clap `///` doc-comments) and the generated `docs-site/src/cli/reference.md` MUST NOT contain internal tracker/decision codes — `REQ-*`, `F-###`, `M#-W#`, `ADR-####`. They are meaningless to an end user reading --help and ship to GH-Pages. A CI-gated scan (the `xtask check` docs gate) fails on any such token in the GENERATED reference.md (which by construction contains only clap help, so rustdoc `///` on fns/structs is OUT of scope and keeps its REQ/ADR cross-refs). Substance is kept; codes are rewritten to plain language. (v0.13.2 W6)",
2026-06-23T10:05:46.8966488Z       "requiredStages": [
2026-06-23T10:05:46.8966584Z         "doc",
2026-06-23T10:05:46.8966669Z         "impl",
2026-06-23T10:05:46.8966753Z         "unit"
2026-06-23T10:05:46.8966839Z       ],
2026-06-23T10:05:46.8966926Z       "stages": {
2026-06-23T10:05:46.8967016Z         "doc": {
2026-06-23T10:05:46.8967115Z           "complete": true,
2026-06-23T10:05:46.8967211Z           "evidence": [
2026-06-23T10:05:46.8967292Z             {
2026-06-23T10:05:46.8967401Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-23T10:05:46.8967483Z               "line": 59
2026-06-23T10:05:46.8967569Z             }
2026-06-23T10:05:46.8967655Z           ]
2026-06-23T10:05:46.8967832Z         },
2026-06-23T10:05:46.8967917Z         "impl": {
2026-06-23T10:05:46.8968007Z           "complete": true,
2026-06-23T10:05:46.8968102Z           "evidence": [
2026-06-23T10:05:46.8968189Z             {
2026-06-23T10:05:46.8968294Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:46.8968384Z               "line": 200
2026-06-23T10:05:46.8968471Z             },
2026-06-23T10:05:46.8968556Z             {
2026-06-23T10:05:46.8968651Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:46.8968732Z               "line": 254
2026-06-23T10:05:46.8968824Z             }
2026-06-23T10:05:46.8969047Z           ]
2026-06-23T10:05:46.8969144Z         },
2026-06-23T10:05:46.8969228Z         "int": {
2026-06-23T10:05:46.8969323Z           "complete": false,
2026-06-23T10:05:46.8969408Z           "evidence": []
2026-06-23T10:05:46.8969494Z         },
2026-06-23T10:05:46.8969582Z         "unit": {
2026-06-23T10:05:46.8969672Z           "complete": true,
2026-06-23T10:05:46.8969759Z           "evidence": [
2026-06-23T10:05:46.8969845Z             {
2026-06-23T10:05:46.8969954Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:46.8970045Z               "line": 1398
2026-06-23T10:05:46.8970126Z             },
2026-06-23T10:05:46.8970216Z             {
2026-06-23T10:05:46.8970311Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:46.8970403Z               "line": 1419
2026-06-23T10:05:46.8970488Z             }
2026-06-23T10:05:46.8970569Z           ]
2026-06-23T10:05:46.8970650Z         }
2026-06-23T10:05:46.8970732Z       }
2026-06-23T10:05:46.8970817Z     },
2026-06-23T10:05:46.8970903Z     {
2026-06-23T10:05:46.8970999Z       "id": "REQ-ELEVATE-1",
2026-06-23T10:05:46.8974051Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-23T10:05:46.8974171Z       "requiredStages": [
2026-06-23T10:05:46.8974258Z         "doc",
2026-06-23T10:05:46.8974342Z         "impl",
2026-06-23T10:05:46.8974433Z         "unit"
2026-06-23T10:05:46.8974515Z       ],
2026-06-23T10:05:46.8974601Z       "stages": {
2026-06-23T10:05:46.8974685Z         "doc": {
2026-06-23T10:05:46.8974770Z           "complete": true,
2026-06-23T10:05:46.8974856Z           "evidence": [
2026-06-23T10:05:46.8974938Z             {
2026-06-23T10:05:46.8975043Z               "path": "CONTEXT.md",
2026-06-23T10:05:46.8975128Z               "line": 705
2026-06-23T10:05:46.8975210Z             }
2026-06-23T10:05:46.8975291Z           ]
2026-06-23T10:05:46.8975371Z         },
2026-06-23T10:05:46.8975462Z         "impl": {
2026-06-23T10:05:46.8975544Z           "complete": true,
2026-06-23T10:05:46.8975629Z           "evidence": [
2026-06-23T10:05:46.8975724Z             {
2026-06-23T10:05:46.8975820Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8975911Z               "line": 4227
2026-06-23T10:05:46.8975987Z             },
2026-06-23T10:05:46.8976072Z             {
2026-06-23T10:05:46.8976173Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8976268Z               "line": 4272
2026-06-23T10:05:46.8976465Z             },
2026-06-23T10:05:46.8976545Z             {
2026-06-23T10:05:46.8976649Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8976740Z               "line": 4334
2026-06-23T10:05:46.8976817Z             },
2026-06-23T10:05:46.8976897Z             {
2026-06-23T10:05:46.8977020Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.8977116Z               "line": 92
2026-06-23T10:05:46.8977191Z             },
2026-06-23T10:05:46.8977275Z             {
2026-06-23T10:05:46.8977380Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.8977576Z               "line": 148
2026-06-23T10:05:46.8977656Z             }
2026-06-23T10:05:46.8977743Z           ]
2026-06-23T10:05:46.8977829Z         },
2026-06-23T10:05:46.8977915Z         "int": {
2026-06-23T10:05:46.8978009Z           "complete": false,
2026-06-23T10:05:46.8978096Z           "evidence": []
2026-06-23T10:05:46.8978181Z         },
2026-06-23T10:05:46.8978267Z         "unit": {
2026-06-23T10:05:46.8978368Z           "complete": true,
2026-06-23T10:05:46.8978454Z           "evidence": [
2026-06-23T10:05:46.8978539Z             {
2026-06-23T10:05:46.8978649Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.8978730Z               "line": 442
2026-06-23T10:05:46.8978811Z             },
2026-06-23T10:05:46.8978892Z             {
2026-06-23T10:05:46.8979088Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.8979182Z               "line": 460
2026-06-23T10:05:46.8979268Z             }
2026-06-23T10:05:46.8979350Z           ]
2026-06-23T10:05:46.8979441Z         }
2026-06-23T10:05:46.8979516Z       }
2026-06-23T10:05:46.8979603Z     },
2026-06-23T10:05:46.8979684Z     {
2026-06-23T10:05:46.8979802Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-23T10:05:46.8981516Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-23T10:05:46.8981622Z       "requiredStages": [
2026-06-23T10:05:46.8981711Z         "doc",
2026-06-23T10:05:46.8981797Z         "impl",
2026-06-23T10:05:46.8981889Z         "unit"
2026-06-23T10:05:46.8981970Z       ],
2026-06-23T10:05:46.8982054Z       "stages": {
2026-06-23T10:05:46.8982140Z         "doc": {
2026-06-23T10:05:46.8982237Z           "complete": true,
2026-06-23T10:05:46.8982340Z           "evidence": [
2026-06-23T10:05:46.8982421Z             {
2026-06-23T10:05:46.8982516Z               "path": "CONTEXT.md",
2026-06-23T10:05:46.8982611Z               "line": 732
2026-06-23T10:05:46.8982695Z             }
2026-06-23T10:05:46.8982766Z           ]
2026-06-23T10:05:46.8982857Z         },
2026-06-23T10:05:46.8982934Z         "impl": {
2026-06-23T10:05:46.8983024Z           "complete": true,
2026-06-23T10:05:46.8983114Z           "evidence": [
2026-06-23T10:05:46.8983201Z             {
2026-06-23T10:05:46.8983311Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8983395Z               "line": 2070
2026-06-23T10:05:46.8983482Z             },
2026-06-23T10:05:46.8983568Z             {
2026-06-23T10:05:46.8983663Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8983753Z               "line": 3775
2026-06-23T10:05:46.8983835Z             },
2026-06-23T10:05:46.8983920Z             {
2026-06-23T10:05:46.8984020Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8984116Z               "line": 3784
2026-06-23T10:05:46.8984198Z             }
2026-06-23T10:05:46.8984278Z           ]
2026-06-23T10:05:46.8984494Z         },
2026-06-23T10:05:46.8984578Z         "int": {
2026-06-23T10:05:46.8984673Z           "complete": false,
2026-06-23T10:05:46.8984760Z           "evidence": []
2026-06-23T10:05:46.8984841Z         },
2026-06-23T10:05:46.8984926Z         "unit": {
2026-06-23T10:05:46.8985017Z           "complete": true,
2026-06-23T10:05:46.8985104Z           "evidence": [
2026-06-23T10:05:46.8985194Z             {
2026-06-23T10:05:46.8985302Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8985383Z               "line": 9327
2026-06-23T10:05:46.8985464Z             },
2026-06-23T10:05:46.8985551Z             {
2026-06-23T10:05:46.8985751Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8985846Z               "line": 9385
2026-06-23T10:05:46.8985926Z             }
2026-06-23T10:05:46.8986002Z           ]
2026-06-23T10:05:46.8986080Z         }
2026-06-23T10:05:46.8986175Z       }
2026-06-23T10:05:46.8986260Z     },
2026-06-23T10:05:46.8986347Z     {
2026-06-23T10:05:46.8986456Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-23T10:05:46.8991160Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-23T10:05:46.8991299Z       "requiredStages": [
2026-06-23T10:05:46.8991379Z         "doc",
2026-06-23T10:05:46.8991460Z         "impl",
2026-06-23T10:05:46.8991557Z         "unit",
2026-06-23T10:05:46.8991643Z         "int"
2026-06-23T10:05:46.8991732Z       ],
2026-06-23T10:05:46.8991809Z       "stages": {
2026-06-23T10:05:46.8991896Z         "doc": {
2026-06-23T10:05:46.8991995Z           "complete": true,
2026-06-23T10:05:46.8992085Z           "evidence": [
2026-06-23T10:05:46.8992167Z             {
2026-06-23T10:05:46.8992261Z               "path": "CONTEXT.md",
2026-06-23T10:05:46.8992347Z               "line": 172
2026-06-23T10:05:46.8992434Z             }
2026-06-23T10:05:46.8992520Z           ]
2026-06-23T10:05:46.8992600Z         },
2026-06-23T10:05:46.8992681Z         "impl": {
2026-06-23T10:05:46.8992778Z           "complete": true,
2026-06-23T10:05:46.8992868Z           "evidence": [
2026-06-23T10:05:46.8992957Z             {
2026-06-23T10:05:46.8993081Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-23T10:05:46.8993185Z               "line": 105
2026-06-23T10:05:46.8993274Z             },
2026-06-23T10:05:46.8993355Z             {
2026-06-23T10:05:46.8993460Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8993551Z               "line": 8284
2026-06-23T10:05:46.8993636Z             }
2026-06-23T10:05:46.8993717Z           ]
2026-06-23T10:05:46.8993917Z         },
2026-06-23T10:05:46.8994003Z         "int": {
2026-06-23T10:05:46.8994090Z           "complete": true,
2026-06-23T10:05:46.8994175Z           "evidence": [
2026-06-23T10:05:46.8994251Z             {
2026-06-23T10:05:46.8994367Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8994452Z               "line": 8761
2026-06-23T10:05:46.8994547Z             }
2026-06-23T10:05:46.8994628Z           ]
2026-06-23T10:05:46.8994715Z         },
2026-06-23T10:05:46.8994805Z         "unit": {
2026-06-23T10:05:46.8994890Z           "complete": true,
2026-06-23T10:05:46.8994976Z           "evidence": [
2026-06-23T10:05:46.8995148Z             {
2026-06-23T10:05:46.8995258Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8995344Z               "line": 8732
2026-06-23T10:05:46.8995430Z             }
2026-06-23T10:05:46.8995515Z           ]
2026-06-23T10:05:46.8995587Z         }
2026-06-23T10:05:46.8995674Z       }
2026-06-23T10:05:46.8995758Z     },
2026-06-23T10:05:46.8995848Z     {
2026-06-23T10:05:46.8995958Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-23T10:05:46.8997211Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-23T10:05:46.8997308Z       "requiredStages": [
2026-06-23T10:05:46.8997402Z         "impl",
2026-06-23T10:05:46.8997493Z         "unit"
2026-06-23T10:05:46.8997575Z       ],
2026-06-23T10:05:46.8997660Z       "stages": {
2026-06-23T10:05:46.8997745Z         "doc": {
2026-06-23T10:05:46.8997836Z           "complete": false,
2026-06-23T10:05:46.8997928Z           "evidence": []
2026-06-23T10:05:46.8998017Z         },
2026-06-23T10:05:46.8998098Z         "impl": {
2026-06-23T10:05:46.8998202Z           "complete": true,
2026-06-23T10:05:46.8998288Z           "evidence": [
2026-06-23T10:05:46.8998377Z             {
2026-06-23T10:05:46.8998481Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8998577Z               "line": 3820
2026-06-23T10:05:46.8998654Z             }
2026-06-23T10:05:46.8998744Z           ]
2026-06-23T10:05:46.8998829Z         },
2026-06-23T10:05:46.8998906Z         "int": {
2026-06-23T10:05:46.8999096Z           "complete": false,
2026-06-23T10:05:46.8999188Z           "evidence": []
2026-06-23T10:05:46.8999273Z         },
2026-06-23T10:05:46.8999349Z         "unit": {
2026-06-23T10:05:46.8999449Z           "complete": true,
2026-06-23T10:05:46.8999531Z           "evidence": [
2026-06-23T10:05:46.8999617Z             {
2026-06-23T10:05:46.8999721Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.8999812Z               "line": 8708
2026-06-23T10:05:46.8999893Z             }
2026-06-23T10:05:46.8999979Z           ]
2026-06-23T10:05:46.9000069Z         }
2026-06-23T10:05:46.9000161Z       }
2026-06-23T10:05:46.9000236Z     },
2026-06-23T10:05:46.9000322Z     {
2026-06-23T10:05:46.9000427Z       "id": "REQ-ENDPOINT-UNBOUND-ATTACH",
2026-06-23T10:05:46.9002889Z       "title": "An spt-hosted endpoint is ATTACHABLE between spawn and bind: gate the attach on the broker SESSION being attachable (session+PTY+OutputLog exist at spawn, before bind), not on perch STATUS_ONLINE (bind). cmd_endpoint_run + `spt rc <id>` attach to a live broker session regardless of perch status (headless bringups too; lets an operator clear a bind-gating prompt) -- replaces await_endpoint_online; preserves REQ-HAZARD-RC-ATTACH-ONLINE-RACE's 'no attach before a session' intent at the earlier session-exists point; source = the broker sessions map (ADR-0025 W3a); local-only. New on-disk status STATUS_UNBOUND (spawn->unbound, bind->online, death->offline); lifecycle reuses the existing exit-waiter/reconcile (session death->offline); unbound is attachable but NOT message-addressable (messaging stays online/bound-gated). EpDisplay gains Unbound = HOLLOW (+ hollow-controlled variant) -- amber=HarnessOnly is taken + means not-controllable (the opposite of attachable). (ADR-0027)",
2026-06-23T10:05:46.9003123Z       "requiredStages": [
2026-06-23T10:05:46.9003198Z         "doc",
2026-06-23T10:05:46.9003280Z         "impl",
2026-06-23T10:05:46.9003371Z         "unit",
2026-06-23T10:05:46.9003456Z         "int"
2026-06-23T10:05:46.9003546Z       ],
2026-06-23T10:05:46.9003631Z       "stages": {
2026-06-23T10:05:46.9003722Z         "doc": {
2026-06-23T10:05:46.9003915Z           "complete": true,
2026-06-23T10:05:46.9004006Z           "evidence": [
2026-06-23T10:05:46.9004093Z             {
2026-06-23T10:05:46.9004191Z               "path": "CONTEXT.md",
2026-06-23T10:05:46.9004287Z               "line": 602
2026-06-23T10:05:46.9004364Z             },
2026-06-23T10:05:46.9004455Z             {
2026-06-23T10:05:46.9004646Z               "path": "docs/adr/0027-unbound-endpoint-state-and-attach-on-session.md",
2026-06-23T10:05:46.9004750Z               "line": 3
2026-06-23T10:05:46.9004835Z             }
2026-06-23T10:05:46.9004912Z           ]
2026-06-23T10:05:46.9004999Z         },
2026-06-23T10:05:46.9005083Z         "impl": {
2026-06-23T10:05:46.9005183Z           "complete": true,
2026-06-23T10:05:46.9005265Z           "evidence": [
2026-06-23T10:05:46.9005360Z             {
2026-06-23T10:05:46.9005488Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9005590Z               "line": 537
2026-06-23T10:05:46.9005708Z             },
2026-06-23T10:05:46.9005793Z             {
2026-06-23T10:05:46.9005919Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9006013Z               "line": 544
2026-06-23T10:05:46.9006104Z             },
2026-06-23T10:05:46.9006196Z             {
2026-06-23T10:05:46.9006310Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T10:05:46.9006408Z               "line": 45
2026-06-23T10:05:46.9006498Z             },
2026-06-23T10:05:46.9006585Z             {
2026-06-23T10:05:46.9006703Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T10:05:46.9006789Z               "line": 80
2026-06-23T10:05:46.9006871Z             },
2026-06-23T10:05:46.9006957Z             {
2026-06-23T10:05:46.9007075Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T10:05:46.9007162Z               "line": 118
2026-06-23T10:05:46.9007243Z             },
2026-06-23T10:05:46.9007324Z             {
2026-06-23T10:05:46.9007438Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9007534Z               "line": 1769
2026-06-23T10:05:46.9007615Z             },
2026-06-23T10:05:46.9007704Z             {
2026-06-23T10:05:46.9007796Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9007882Z               "line": 1790
2026-06-23T10:05:46.9007962Z             },
2026-06-23T10:05:46.9008048Z             {
2026-06-23T10:05:46.9008164Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T10:05:46.9008263Z               "line": 151
2026-06-23T10:05:46.9008348Z             },
2026-06-23T10:05:46.9008430Z             {
2026-06-23T10:05:46.9008535Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T10:05:46.9008625Z               "line": 173
2026-06-23T10:05:46.9008710Z             },
2026-06-23T10:05:46.9008796Z             {
2026-06-23T10:05:46.9008904Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:46.9009060Z               "line": 542
2026-06-23T10:05:46.9009147Z             },
2026-06-23T10:05:46.9009233Z             {
2026-06-23T10:05:46.9009341Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:46.9009423Z               "line": 555
2026-06-23T10:05:46.9009510Z             },
2026-06-23T10:05:46.9009585Z             {
2026-06-23T10:05:46.9009694Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:46.9009786Z               "line": 752
2026-06-23T10:05:46.9009872Z             },
2026-06-23T10:05:46.9010077Z             {
2026-06-23T10:05:46.9010182Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:46.9010276Z               "line": 804
2026-06-23T10:05:46.9010358Z             }
2026-06-23T10:05:46.9010449Z           ]
2026-06-23T10:05:46.9010534Z         },
2026-06-23T10:05:46.9010620Z         "int": {
2026-06-23T10:05:46.9010721Z           "complete": true,
2026-06-23T10:05:46.9010815Z           "evidence": [
2026-06-23T10:05:46.9010892Z             {
2026-06-23T10:05:46.9011002Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T10:05:46.9011093Z               "line": 426
2026-06-23T10:05:46.9011273Z             },
2026-06-23T10:05:46.9011356Z             {
2026-06-23T10:05:46.9011506Z               "path": "crates/spt/tests/multi_subnet_bringup_e2e.rs",
2026-06-23T10:05:46.9011596Z               "line": 333
2026-06-23T10:05:46.9011678Z             }
2026-06-23T10:05:46.9011762Z           ]
2026-06-23T10:05:46.9011847Z         },
2026-06-23T10:05:46.9011942Z         "unit": {
2026-06-23T10:05:46.9012043Z           "complete": true,
2026-06-23T10:05:46.9012142Z           "evidence": [
2026-06-23T10:05:46.9012227Z             {
2026-06-23T10:05:46.9012348Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9012434Z               "line": 1033
2026-06-23T10:05:46.9012519Z             },
2026-06-23T10:05:46.9012595Z             {
2026-06-23T10:05:46.9012710Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T10:05:46.9012796Z               "line": 224
2026-06-23T10:05:46.9012881Z             },
2026-06-23T10:05:46.9012968Z             {
2026-06-23T10:05:46.9013091Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T10:05:46.9013172Z               "line": 262
2026-06-23T10:05:46.9013254Z             },
2026-06-23T10:05:46.9013335Z             {
2026-06-23T10:05:46.9013439Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9013530Z               "line": 9351
2026-06-23T10:05:46.9013631Z             },
2026-06-23T10:05:46.9013716Z             {
2026-06-23T10:05:46.9013820Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9013908Z               "line": 9563
2026-06-23T10:05:46.9013998Z             },
2026-06-23T10:05:46.9014086Z             {
2026-06-23T10:05:46.9014191Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T10:05:46.9014287Z               "line": 395
2026-06-23T10:05:46.9014371Z             },
2026-06-23T10:05:46.9014461Z             {
2026-06-23T10:05:46.9014566Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:46.9014658Z               "line": 957
2026-06-23T10:05:46.9014756Z             },
2026-06-23T10:05:46.9014842Z             {
2026-06-23T10:05:46.9014953Z               "path": "crates/spt/src/picker/view.rs",
2026-06-23T10:05:46.9015034Z               "line": 509
2026-06-23T10:05:46.9015124Z             }
2026-06-23T10:05:46.9015206Z           ]
2026-06-23T10:05:46.9015291Z         }
2026-06-23T10:05:46.9015376Z       }
2026-06-23T10:05:46.9015457Z     },
2026-06-23T10:05:46.9015539Z     {
2026-06-23T10:05:46.9015624Z       "id": "REQ-EP-1",
2026-06-23T10:05:46.9015753Z       "title": "Day-one endpoint types; open type system",
2026-06-23T10:05:46.9015850Z       "requiredStages": [
2026-06-23T10:05:46.9015939Z         "impl",
2026-06-23T10:05:46.9016025Z         "unit"
2026-06-23T10:05:46.9016111Z       ],
2026-06-23T10:05:46.9016198Z       "stages": {
2026-06-23T10:05:46.9016277Z         "doc": {
2026-06-23T10:05:46.9016378Z           "complete": false,
2026-06-23T10:05:46.9016456Z           "evidence": []
2026-06-23T10:05:46.9016550Z         },
2026-06-23T10:05:46.9016625Z         "impl": {
2026-06-23T10:05:46.9016712Z           "complete": true,
2026-06-23T10:05:46.9016808Z           "evidence": [
2026-06-23T10:05:46.9016893Z             {
2026-06-23T10:05:46.9017016Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T10:05:46.9017106Z               "line": 77
2026-06-23T10:05:46.9017203Z             },
2026-06-23T10:05:46.9017368Z             {
2026-06-23T10:05:46.9017488Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T10:05:46.9017579Z               "line": 94
2026-06-23T10:05:46.9017664Z             }
2026-06-23T10:05:46.9017741Z           ]
2026-06-23T10:05:46.9017817Z         },
2026-06-23T10:05:46.9017908Z         "int": {
2026-06-23T10:05:46.9017993Z           "complete": false,
2026-06-23T10:05:46.9018080Z           "evidence": []
2026-06-23T10:05:46.9018175Z         },
2026-06-23T10:05:46.9018255Z         "unit": {
2026-06-23T10:05:46.9018341Z           "complete": true,
2026-06-23T10:05:46.9018508Z           "evidence": [
2026-06-23T10:05:46.9018594Z             {
2026-06-23T10:05:46.9018719Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T10:05:46.9018799Z               "line": 161
2026-06-23T10:05:46.9018880Z             },
2026-06-23T10:05:46.9019024Z             {
2026-06-23T10:05:46.9019147Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T10:05:46.9019232Z               "line": 178
2026-06-23T10:05:46.9019323Z             }
2026-06-23T10:05:46.9019408Z           ]
2026-06-23T10:05:46.9019483Z         }
2026-06-23T10:05:46.9019568Z       }
2026-06-23T10:05:46.9019654Z     },
2026-06-23T10:05:46.9019741Z     {
2026-06-23T10:05:46.9019830Z       "id": "REQ-EP-2",
2026-06-23T10:05:46.9019998Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-23T10:05:46.9020098Z       "requiredStages": [
2026-06-23T10:05:46.9020183Z         "impl",
2026-06-23T10:05:46.9020269Z         "unit"
2026-06-23T10:05:46.9020342Z       ],
2026-06-23T10:05:46.9020441Z       "stages": {
2026-06-23T10:05:46.9020526Z         "doc": {
2026-06-23T10:05:46.9020613Z           "complete": false,
2026-06-23T10:05:46.9020708Z           "evidence": []
2026-06-23T10:05:46.9020789Z         },
2026-06-23T10:05:46.9020870Z         "impl": {
2026-06-23T10:05:46.9020957Z           "complete": true,
2026-06-23T10:05:46.9021046Z           "evidence": [
2026-06-23T10:05:46.9021137Z             {
2026-06-23T10:05:46.9023804Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T10:05:46.9023937Z               "line": 114
2026-06-23T10:05:46.9024014Z             },
2026-06-23T10:05:46.9024100Z             {
2026-06-23T10:05:46.9024238Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T10:05:46.9024328Z               "line": 131
2026-06-23T10:05:46.9024415Z             },
2026-06-23T10:05:46.9024496Z             {
2026-06-23T10:05:46.9024628Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T10:05:46.9024718Z               "line": 138
2026-06-23T10:05:46.9024823Z             }
2026-06-23T10:05:46.9024903Z           ]
2026-06-23T10:05:46.9024992Z         },
2026-06-23T10:05:46.9025073Z         "int": {
2026-06-23T10:05:46.9025175Z           "complete": false,
2026-06-23T10:05:46.9025265Z           "evidence": []
2026-06-23T10:05:46.9025345Z         },
2026-06-23T10:05:46.9025437Z         "unit": {
2026-06-23T10:05:46.9025536Z           "complete": true,
2026-06-23T10:05:46.9025617Z           "evidence": [
2026-06-23T10:05:46.9025698Z             {
2026-06-23T10:05:46.9025813Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T10:05:46.9025894Z               "line": 190
2026-06-23T10:05:46.9025979Z             },
2026-06-23T10:05:46.9026067Z             {
2026-06-23T10:05:46.9026185Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T10:05:46.9026275Z               "line": 208
2026-06-23T10:05:46.9026356Z             },
2026-06-23T10:05:46.9026448Z             {
2026-06-23T10:05:46.9026571Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T10:05:46.9026662Z               "line": 221
2026-06-23T10:05:46.9026753Z             }
2026-06-23T10:05:46.9026833Z           ]
2026-06-23T10:05:46.9026919Z         }
2026-06-23T10:05:46.9027001Z       }
2026-06-23T10:05:46.9027082Z     },
2026-06-23T10:05:46.9027171Z     {
2026-06-23T10:05:46.9027257Z       "id": "REQ-EP-3",
2026-06-23T10:05:46.9027585Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-23T10:05:46.9027681Z       "requiredStages": [
2026-06-23T10:05:46.9027768Z         "impl",
2026-06-23T10:05:46.9027847Z         "unit"
2026-06-23T10:05:46.9027933Z       ],
2026-06-23T10:05:46.9028020Z       "stages": {
2026-06-23T10:05:46.9028106Z         "doc": {
2026-06-23T10:05:46.9028200Z           "complete": false,
2026-06-23T10:05:46.9028277Z           "evidence": []
2026-06-23T10:05:46.9028364Z         },
2026-06-23T10:05:46.9028440Z         "impl": {
2026-06-23T10:05:46.9028534Z           "complete": true,
2026-06-23T10:05:46.9028744Z           "evidence": [
2026-06-23T10:05:46.9028820Z             {
2026-06-23T10:05:46.9029022Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-23T10:05:46.9029117Z               "line": 31
2026-06-23T10:05:46.9029187Z             },
2026-06-23T10:05:46.9029270Z             {
2026-06-23T10:05:46.9029383Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-23T10:05:46.9029502Z               "line": 49
2026-06-23T10:05:46.9029580Z             }
2026-06-23T10:05:46.9029665Z           ]
2026-06-23T10:05:46.9029745Z         },
2026-06-23T10:05:46.9029830Z         "int": {
2026-06-23T10:05:46.9029911Z           "complete": false,
2026-06-23T10:05:46.9030006Z           "evidence": []
2026-06-23T10:05:46.9030090Z         },
2026-06-23T10:05:46.9030175Z         "unit": {
2026-06-23T10:05:46.9030277Z           "complete": true,
2026-06-23T10:05:46.9030363Z           "evidence": [
2026-06-23T10:05:46.9030452Z             {
2026-06-23T10:05:46.9030582Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-23T10:05:46.9030668Z               "line": 156
2026-06-23T10:05:46.9030753Z             },
2026-06-23T10:05:46.9030834Z             {
2026-06-23T10:05:46.9030953Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-23T10:05:46.9031039Z               "line": 164
2026-06-23T10:05:46.9031129Z             },
2026-06-23T10:05:46.9031212Z             {
2026-06-23T10:05:46.9031321Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-23T10:05:46.9031411Z               "line": 177
2026-06-23T10:05:46.9031493Z             },
2026-06-23T10:05:46.9031578Z             {
2026-06-23T10:05:46.9031687Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-23T10:05:46.9031778Z               "line": 200
2026-06-23T10:05:46.9031865Z             },
2026-06-23T10:05:46.9031945Z             {
2026-06-23T10:05:46.9032059Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-23T10:05:46.9032132Z               "line": 216
2026-06-23T10:05:46.9032222Z             },
2026-06-23T10:05:46.9032302Z             {
2026-06-23T10:05:46.9032408Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-23T10:05:46.9032495Z               "line": 233
2026-06-23T10:05:46.9032584Z             }
2026-06-23T10:05:46.9032669Z           ]
2026-06-23T10:05:46.9032745Z         }
2026-06-23T10:05:46.9032831Z       }
2026-06-23T10:05:46.9032919Z     },
2026-06-23T10:05:46.9033005Z     {
2026-06-23T10:05:46.9033095Z       "id": "REQ-EP-4",
2026-06-23T10:05:46.9033234Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-23T10:05:46.9033334Z       "requiredStages": [
2026-06-23T10:05:46.9033420Z         "impl",
2026-06-23T10:05:46.9033502Z         "unit"
2026-06-23T10:05:46.9033577Z       ],
2026-06-23T10:05:46.9033663Z       "stages": {
2026-06-23T10:05:46.9033755Z         "doc": {
2026-06-23T10:05:46.9033840Z           "complete": false,
2026-06-23T10:05:46.9033925Z           "evidence": []
2026-06-23T10:05:46.9034011Z         },
2026-06-23T10:05:46.9034098Z         "impl": {
2026-06-23T10:05:46.9034192Z           "complete": true,
2026-06-23T10:05:46.9034273Z           "evidence": [
2026-06-23T10:05:46.9034355Z             {
2026-06-23T10:05:46.9034474Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9034554Z               "line": 778
2026-06-23T10:05:46.9034635Z             },
2026-06-23T10:05:46.9034826Z             {
2026-06-23T10:05:46.9034936Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9035023Z               "line": 1249
2026-06-23T10:05:46.9035109Z             },
2026-06-23T10:05:46.9035193Z             {
2026-06-23T10:05:46.9035312Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9035388Z               "line": 2268
2026-06-23T10:05:46.9035472Z             },
2026-06-23T10:05:46.9035548Z             {
2026-06-23T10:05:46.9035653Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:46.9035749Z               "line": 131
2026-06-23T10:05:46.9035929Z             },
2026-06-23T10:05:46.9036021Z             {
2026-06-23T10:05:46.9036126Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:46.9036219Z               "line": 751
2026-06-23T10:05:46.9036307Z             },
2026-06-23T10:05:46.9036388Z             {
2026-06-23T10:05:46.9036492Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:46.9036588Z               "line": 900
2026-06-23T10:05:46.9036674Z             },
2026-06-23T10:05:46.9036759Z             {
2026-06-23T10:05:46.9036878Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:46.9036961Z               "line": 271
2026-06-23T10:05:46.9037036Z             },
2026-06-23T10:05:46.9037117Z             {
2026-06-23T10:05:46.9037222Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:46.9037308Z               "line": 458
2026-06-23T10:05:46.9037393Z             },
2026-06-23T10:05:46.9037479Z             {
2026-06-23T10:05:46.9037595Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:46.9037684Z               "line": 1246
2026-06-23T10:05:46.9037770Z             }
2026-06-23T10:05:46.9037847Z           ]
2026-06-23T10:05:46.9037933Z         },
2026-06-23T10:05:46.9038009Z         "int": {
2026-06-23T10:05:46.9038093Z           "complete": false,
2026-06-23T10:05:46.9038179Z           "evidence": []
2026-06-23T10:05:46.9038260Z         },
2026-06-23T10:05:46.9038352Z         "unit": {
2026-06-23T10:05:46.9038445Z           "complete": true,
2026-06-23T10:05:46.9038542Z           "evidence": [
2026-06-23T10:05:46.9038614Z             {
2026-06-23T10:05:46.9038718Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:46.9038803Z               "line": 991
2026-06-23T10:05:46.9038890Z             },
2026-06-23T10:05:46.9039066Z             {
2026-06-23T10:05:46.9039176Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-23T10:05:46.9039272Z               "line": 76
2026-06-23T10:05:46.9039353Z             },
2026-06-23T10:05:46.9039433Z             {
2026-06-23T10:05:46.9039539Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-23T10:05:46.9039628Z               "line": 147
2026-06-23T10:05:46.9039714Z             }
2026-06-23T10:05:46.9039796Z           ]
2026-06-23T10:05:46.9039887Z         }
2026-06-23T10:05:46.9039967Z       }
2026-06-23T10:05:46.9040048Z     },
2026-06-23T10:05:46.9040125Z     {
2026-06-23T10:05:46.9040207Z       "id": "REQ-EP-5",
2026-06-23T10:05:46.9040847Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-23T10:05:46.9040946Z       "requiredStages": [
2026-06-23T10:05:46.9041041Z         "impl",
2026-06-23T10:05:46.9041127Z         "unit",
2026-06-23T10:05:46.9041208Z         "int"
2026-06-23T10:05:46.9041294Z       ],
2026-06-23T10:05:46.9041384Z       "stages": {
2026-06-23T10:05:46.9041472Z         "doc": {
2026-06-23T10:05:46.9041562Z           "complete": false,
2026-06-23T10:05:46.9041642Z           "evidence": []
2026-06-23T10:05:46.9041729Z         },
2026-06-23T10:05:46.9041815Z         "impl": {
2026-06-23T10:05:46.9041914Z           "complete": true,
2026-06-23T10:05:46.9042000Z           "evidence": [
2026-06-23T10:05:46.9042181Z             {
2026-06-23T10:05:46.9042310Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9042397Z               "line": 367
2026-06-23T10:05:46.9042482Z             },
2026-06-23T10:05:46.9042563Z             {
2026-06-23T10:05:46.9042688Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-23T10:05:46.9042778Z               "line": 18
2026-06-23T10:05:46.9042862Z             },
2026-06-23T10:05:46.9042944Z             {
2026-06-23T10:05:46.9043060Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-23T10:05:46.9043244Z               "line": 63
2026-06-23T10:05:46.9043329Z             },
2026-06-23T10:05:46.9043420Z             {
2026-06-23T10:05:46.9043527Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-23T10:05:46.9043617Z               "line": 92
2026-06-23T10:05:46.9043704Z             },
2026-06-23T10:05:46.9043785Z             {
2026-06-23T10:05:46.9043894Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-23T10:05:46.9043995Z               "line": 167
2026-06-23T10:05:46.9044076Z             },
2026-06-23T10:05:46.9044156Z             {
2026-06-23T10:05:46.9044281Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-23T10:05:46.9044367Z               "line": 179
2026-06-23T10:05:46.9044452Z             },
2026-06-23T10:05:46.9044533Z             {
2026-06-23T10:05:46.9044644Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9044738Z               "line": 114
2026-06-23T10:05:46.9044819Z             },
2026-06-23T10:05:46.9044910Z             {
2026-06-23T10:05:46.9045029Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T10:05:46.9045115Z               "line": 22
2026-06-23T10:05:46.9045196Z             },
2026-06-23T10:05:46.9045288Z             {
2026-06-23T10:05:46.9045405Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T10:05:46.9045482Z               "line": 145
2026-06-23T10:05:46.9045569Z             },
2026-06-23T10:05:46.9045650Z             {
2026-06-23T10:05:46.9045767Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T10:05:46.9045848Z               "line": 174
2026-06-23T10:05:46.9045934Z             },
2026-06-23T10:05:46.9046023Z             {
2026-06-23T10:05:46.9046131Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T10:05:46.9046227Z               "line": 196
2026-06-23T10:05:46.9046309Z             },
2026-06-23T10:05:46.9046394Z             {
2026-06-23T10:05:46.9046509Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T10:05:46.9046605Z               "line": 221
2026-06-23T10:05:46.9046686Z             },
2026-06-23T10:05:46.9046771Z             {
2026-06-23T10:05:46.9046896Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T10:05:46.9046986Z               "line": 247
2026-06-23T10:05:46.9047071Z             },
2026-06-23T10:05:46.9047153Z             {
2026-06-23T10:05:46.9047257Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T10:05:46.9047343Z               "line": 270
2026-06-23T10:05:46.9047428Z             },
2026-06-23T10:05:46.9047516Z             {
2026-06-23T10:05:46.9047624Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.9047710Z               "line": 104
2026-06-23T10:05:46.9047792Z             },
2026-06-23T10:05:46.9047878Z             {
2026-06-23T10:05:46.9047986Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9048068Z               "line": 7133
2026-06-23T10:05:46.9048155Z             },
2026-06-23T10:05:46.9048240Z             {
2026-06-23T10:05:46.9048345Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9048436Z               "line": 7267
2026-06-23T10:05:46.9048512Z             },
2026-06-23T10:05:46.9048597Z             {
2026-06-23T10:05:46.9048700Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9048787Z               "line": 7433
2026-06-23T10:05:46.9048935Z             },
2026-06-23T10:05:46.9049107Z             {
2026-06-23T10:05:46.9049212Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9049297Z               "line": 7961
2026-06-23T10:05:46.9049383Z             }
2026-06-23T10:05:46.9049460Z           ]
2026-06-23T10:05:46.9049545Z         },
2026-06-23T10:05:46.9049631Z         "int": {
2026-06-23T10:05:46.9049726Z           "complete": true,
2026-06-23T10:05:46.9049817Z           "evidence": [
2026-06-23T10:05:46.9049893Z             {
2026-06-23T10:05:46.9050017Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-23T10:05:46.9050207Z               "line": 16
2026-06-23T10:05:46.9050288Z             },
2026-06-23T10:05:46.9050371Z             {
2026-06-23T10:05:46.9050490Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-23T10:05:46.9050580Z               "line": 15
2026-06-23T10:05:46.9050661Z             }
2026-06-23T10:05:46.9050743Z           ]
2026-06-23T10:05:46.9050827Z         },
2026-06-23T10:05:46.9050917Z         "unit": {
2026-06-23T10:05:46.9051003Z           "complete": true,
2026-06-23T10:05:46.9051098Z           "evidence": [
2026-06-23T10:05:46.9051178Z             {
2026-06-23T10:05:46.9051296Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-23T10:05:46.9051392Z               "line": 246
2026-06-23T10:05:46.9051469Z             },
2026-06-23T10:05:46.9051553Z             {
2026-06-23T10:05:46.9051664Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-23T10:05:46.9051745Z               "line": 306
2026-06-23T10:05:46.9051835Z             },
2026-06-23T10:05:46.9051921Z             {
2026-06-23T10:05:46.9052041Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-23T10:05:46.9052122Z               "line": 363
2026-06-23T10:05:46.9052206Z             },
2026-06-23T10:05:46.9052294Z             {
2026-06-23T10:05:46.9052403Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T10:05:46.9052489Z               "line": 286
2026-06-23T10:05:46.9052574Z             },
2026-06-23T10:05:46.9052651Z             {
2026-06-23T10:05:46.9052770Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T10:05:46.9052855Z               "line": 338
2026-06-23T10:05:46.9052942Z             },
2026-06-23T10:05:46.9053023Z             {
2026-06-23T10:05:46.9053142Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.9053233Z               "line": 783
2026-06-23T10:05:46.9053310Z             },
2026-06-23T10:05:46.9053399Z             {
2026-06-23T10:05:46.9053494Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9053591Z               "line": 10289
2026-06-23T10:05:46.9053672Z             },
2026-06-23T10:05:46.9053760Z             {
2026-06-23T10:05:46.9053860Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9053952Z               "line": 10442
2026-06-23T10:05:46.9054036Z             },
2026-06-23T10:05:46.9054120Z             {
2026-06-23T10:05:46.9054225Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9054317Z               "line": 11031
2026-06-23T10:05:46.9054402Z             },
2026-06-23T10:05:46.9054487Z             {
2026-06-23T10:05:46.9054594Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9054679Z               "line": 11147
2026-06-23T10:05:46.9054754Z             }
2026-06-23T10:05:46.9054836Z           ]
2026-06-23T10:05:46.9054908Z         }
2026-06-23T10:05:46.9054999Z       }
2026-06-23T10:05:46.9055074Z     },
2026-06-23T10:05:46.9055160Z     {
2026-06-23T10:05:46.9055247Z       "id": "REQ-EP-6",
2026-06-23T10:05:46.9056706Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-23T10:05:46.9056912Z       "requiredStages": [
2026-06-23T10:05:46.9056997Z         "doc",
2026-06-23T10:05:46.9057078Z         "impl",
2026-06-23T10:05:46.9057165Z         "unit"
2026-06-23T10:05:46.9057250Z       ],
2026-06-23T10:05:46.9057336Z       "stages": {
2026-06-23T10:05:46.9057408Z         "doc": {
2026-06-23T10:05:46.9057508Z           "complete": true,
2026-06-23T10:05:46.9057598Z           "evidence": [
2026-06-23T10:05:46.9057683Z             {
2026-06-23T10:05:46.9057771Z               "path": "CONTEXT.md",
2026-06-23T10:05:46.9057955Z               "line": 236
2026-06-23T10:05:46.9058037Z             }
2026-06-23T10:05:46.9058114Z           ]
2026-06-23T10:05:46.9058199Z         },
2026-06-23T10:05:46.9058275Z         "impl": {
2026-06-23T10:05:46.9058366Z           "complete": true,
2026-06-23T10:05:46.9058447Z           "evidence": [
2026-06-23T10:05:46.9058537Z             {
2026-06-23T10:05:46.9058667Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:46.9058748Z               "line": 212
2026-06-23T10:05:46.9058832Z             }
2026-06-23T10:05:46.9058914Z           ]
2026-06-23T10:05:46.9059082Z         },
2026-06-23T10:05:46.9059161Z         "int": {
2026-06-23T10:05:46.9059260Z           "complete": true,
2026-06-23T10:05:46.9059342Z           "evidence": [
2026-06-23T10:05:46.9059429Z             {
2026-06-23T10:05:46.9059547Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-23T10:05:46.9059633Z               "line": 18
2026-06-23T10:05:46.9059720Z             }
2026-06-23T10:05:46.9059801Z           ]
2026-06-23T10:05:46.9059881Z         },
2026-06-23T10:05:46.9059972Z         "unit": {
2026-06-23T10:05:46.9060063Z           "complete": true,
2026-06-23T10:05:46.9060148Z           "evidence": [
2026-06-23T10:05:46.9060228Z             {
2026-06-23T10:05:46.9060349Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:46.9060444Z               "line": 558
2026-06-23T10:05:46.9060529Z             },
2026-06-23T10:05:46.9060616Z             {
2026-06-23T10:05:46.9060721Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:46.9060802Z               "line": 904
2026-06-23T10:05:46.9060882Z             }
2026-06-23T10:05:46.9060965Z           ]
2026-06-23T10:05:46.9061054Z         }
2026-06-23T10:05:46.9061130Z       }
2026-06-23T10:05:46.9061212Z     },
2026-06-23T10:05:46.9061294Z     {
2026-06-23T10:05:46.9061387Z       "id": "REQ-EP-7",
2026-06-23T10:05:46.9062996Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-23T10:05:46.9063110Z       "requiredStages": [
2026-06-23T10:05:46.9063193Z         "doc",
2026-06-23T10:05:46.9063278Z         "impl",
2026-06-23T10:05:46.9063359Z         "unit"
2026-06-23T10:05:46.9063444Z       ],
2026-06-23T10:05:46.9063531Z       "stages": {
2026-06-23T10:05:46.9063616Z         "doc": {
2026-06-23T10:05:46.9063702Z           "complete": true,
2026-06-23T10:05:46.9063793Z           "evidence": [
2026-06-23T10:05:46.9063879Z             {
2026-06-23T10:05:46.9063978Z               "path": "CONTEXT.md",
2026-06-23T10:05:46.9064069Z               "line": 503
2026-06-23T10:05:46.9064156Z             }
2026-06-23T10:05:46.9064237Z           ]
2026-06-23T10:05:46.9064316Z         },
2026-06-23T10:05:46.9064406Z         "impl": {
2026-06-23T10:05:46.9064492Z           "complete": true,
2026-06-23T10:05:46.9064591Z           "evidence": [
2026-06-23T10:05:46.9064675Z             {
2026-06-23T10:05:46.9064891Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T10:05:46.9064981Z               "line": 505
2026-06-23T10:05:46.9065062Z             },
2026-06-23T10:05:46.9065149Z             {
2026-06-23T10:05:46.9065249Z               "path": "crates/spt-live/src/resume.rs",
2026-06-23T10:05:46.9065338Z               "line": 87
2026-06-23T10:05:46.9065421Z             },
2026-06-23T10:05:46.9065506Z             {
2026-06-23T10:05:46.9065634Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:46.9065720Z               "line": 81
2026-06-23T10:05:46.9065802Z             },
2026-06-23T10:05:46.9065977Z             {
2026-06-23T10:05:46.9066108Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:46.9066192Z               "line": 166
2026-06-23T10:05:46.9066278Z             },
2026-06-23T10:05:46.9066370Z             {
2026-06-23T10:05:46.9066479Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9066569Z               "line": 1994
2026-06-23T10:05:46.9066660Z             }
2026-06-23T10:05:46.9066747Z           ]
2026-06-23T10:05:46.9066826Z         },
2026-06-23T10:05:46.9066916Z         "int": {
2026-06-23T10:05:46.9067012Z           "complete": false,
2026-06-23T10:05:46.9067102Z           "evidence": []
2026-06-23T10:05:46.9067190Z         },
2026-06-23T10:05:46.9067276Z         "unit": {
2026-06-23T10:05:46.9067376Z           "complete": true,
2026-06-23T10:05:46.9067468Z           "evidence": [
2026-06-23T10:05:46.9067552Z             {
2026-06-23T10:05:46.9067667Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T10:05:46.9067753Z               "line": 623
2026-06-23T10:05:46.9067843Z             },
2026-06-23T10:05:46.9067924Z             {
2026-06-23T10:05:46.9068040Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T10:05:46.9068125Z               "line": 212
2026-06-23T10:05:46.9068205Z             },
2026-06-23T10:05:46.9068297Z             {
2026-06-23T10:05:46.9068411Z               "path": "crates/spt-live/src/resume.rs",
2026-06-23T10:05:46.9068501Z               "line": 307
2026-06-23T10:05:46.9068587Z             },
2026-06-23T10:05:46.9068679Z             {
2026-06-23T10:05:46.9068779Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9068874Z               "line": 9101
2026-06-23T10:05:46.9069026Z             },
2026-06-23T10:05:46.9069112Z             {
2026-06-23T10:05:46.9069212Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9069295Z               "line": 9128
2026-06-23T10:05:46.9069378Z             }
2026-06-23T10:05:46.9069460Z           ]
2026-06-23T10:05:46.9069542Z         }
2026-06-23T10:05:46.9069633Z       }
2026-06-23T10:05:46.9069712Z     },
2026-06-23T10:05:46.9069793Z     {
2026-06-23T10:05:46.9069883Z       "id": "REQ-EP-8",
2026-06-23T10:05:46.9072641Z       "title": "AlwaysOnEndpoint: a resident, addressable, mindless endpoint whose adapter binary the daemon supervises continuously — register-triggered by an adapter-option's `[always-on]` manifest section, one supervised binary per `<adapter>[:profile]`, running independent of agent liveness. It self-manages its `#`-addressed channel endpoints via the existing `api bind` (one connection fronts many). The SECOND class of spt-core-boot-launched third-party binary (after the shell wake-watcher); supervision reuses the wake-watcher scaffolding (backoff / give-up latch / one-per-instance lock / orphan-kill / brain-side reconcile) MINUS the offline-only flip — always online, never resting (no dormant/suspended states). Two-way: agents message it; it may call `endpoint wake <id>`, target-side authorized (REQ-INST-3/6 wake resolution + access whitelist + shell_wake_spawn_anywhere — no caller-ownership gate). First consumer downstream: spt-discord.",
2026-06-23T10:05:46.9072760Z       "requiredStages": [],
2026-06-23T10:05:46.9072837Z       "stages": {
2026-06-23T10:05:46.9072922Z         "doc": {
2026-06-23T10:05:46.9073017Z           "complete": true,
2026-06-23T10:05:46.9073214Z           "evidence": [
2026-06-23T10:05:46.9073294Z             {
2026-06-23T10:05:46.9073566Z               "path": "docs/adr/0023-always-on-endpoints-resident-supervised-binary-sigil-addressing.md",
2026-06-23T10:05:46.9073656Z               "line": 5
2026-06-23T10:05:46.9073738Z             }
2026-06-23T10:05:46.9073824Z           ]
2026-06-23T10:05:46.9073909Z         },
2026-06-23T10:05:46.9073994Z         "impl": {
2026-06-23T10:05:46.9074091Z           "complete": false,
2026-06-23T10:05:46.9074176Z           "evidence": []
2026-06-23T10:05:46.9074262Z         },
2026-06-23T10:05:46.9074344Z         "int": {
2026-06-23T10:05:46.9074543Z           "complete": false,
2026-06-23T10:05:46.9074634Z           "evidence": []
2026-06-23T10:05:46.9074717Z         },
2026-06-23T10:05:46.9074801Z         "unit": {
2026-06-23T10:05:46.9074890Z           "complete": false,
2026-06-23T10:05:46.9074985Z           "evidence": []
2026-06-23T10:05:46.9075066Z         }
2026-06-23T10:05:46.9075156Z       }
2026-06-23T10:05:46.9075240Z     },
2026-06-23T10:05:46.9075327Z     {
2026-06-23T10:05:46.9075418Z       "id": "REQ-EP-9",
2026-06-23T10:05:46.9076958Z       "title": "`#` always-on address sigil: a reserved LEADING sigil marking an AlwaysOnEndpoint, extending the REQ-INST-10 grammar to `[subnet:]#id[@node]`. Mandatory + bijective — `#name` ⟺ always-on endpoint, bare `name` ⟺ agent endpoint — so the router resolves endpoint class from the address alone, before any registry lookup. Sits ABOVE REQ-HAZARD-ID-CHARSET: the address parser strips the single leading `#` before id validation, so the bare/stored id stays charset-clean and a mid-id `#` remains rejected (the charset contract is unchanged).",
2026-06-23T10:05:46.9077058Z       "requiredStages": [],
2026-06-23T10:05:46.9077148Z       "stages": {
2026-06-23T10:05:46.9077235Z         "doc": {
2026-06-23T10:05:46.9077330Z           "complete": true,
2026-06-23T10:05:46.9077415Z           "evidence": [
2026-06-23T10:05:46.9077505Z             {
2026-06-23T10:05:46.9077779Z               "path": "docs/adr/0023-always-on-endpoints-resident-supervised-binary-sigil-addressing.md",
2026-06-23T10:05:46.9077864Z               "line": 5
2026-06-23T10:05:46.9077956Z             }
2026-06-23T10:05:46.9078038Z           ]
2026-06-23T10:05:46.9078127Z         },
2026-06-23T10:05:46.9078213Z         "impl": {
2026-06-23T10:05:46.9078309Z           "complete": false,
2026-06-23T10:05:46.9078394Z           "evidence": []
2026-06-23T10:05:46.9078480Z         },
2026-06-23T10:05:46.9078571Z         "int": {
2026-06-23T10:05:46.9078661Z           "complete": false,
2026-06-23T10:05:46.9078765Z           "evidence": []
2026-06-23T10:05:46.9078848Z         },
2026-06-23T10:05:46.9078938Z         "unit": {
2026-06-23T10:05:46.9079128Z           "complete": false,
2026-06-23T10:05:46.9079215Z           "evidence": []
2026-06-23T10:05:46.9079295Z         }
2026-06-23T10:05:46.9079381Z       }
2026-06-23T10:05:46.9079467Z     },
2026-06-23T10:05:46.9079549Z     {
2026-06-23T10:05:46.9079647Z       "id": "REQ-FRONT-1",
2026-06-23T10:05:46.9079821Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-23T10:05:46.9079916Z       "requiredStages": [],
2026-06-23T10:05:46.9080001Z       "stages": {
2026-06-23T10:05:46.9080082Z         "doc": {
2026-06-23T10:05:46.9080179Z           "complete": false,
2026-06-23T10:05:46.9080263Z           "evidence": []
2026-06-23T10:05:46.9080348Z         },
2026-06-23T10:05:46.9080434Z         "impl": {
2026-06-23T10:05:46.9080516Z           "complete": false,
2026-06-23T10:05:46.9080610Z           "evidence": []
2026-06-23T10:05:46.9080696Z         },
2026-06-23T10:05:46.9080777Z         "int": {
2026-06-23T10:05:46.9080873Z           "complete": false,
2026-06-23T10:05:46.9080958Z           "evidence": []
2026-06-23T10:05:46.9081044Z         },
2026-06-23T10:05:46.9081117Z         "unit": {
2026-06-23T10:05:46.9081211Z           "complete": false,
2026-06-23T10:05:46.9081296Z           "evidence": []
2026-06-23T10:05:46.9081479Z         }
2026-06-23T10:05:46.9081554Z       }
2026-06-23T10:05:46.9081635Z     },
2026-06-23T10:05:46.9081727Z     {
2026-06-23T10:05:46.9081822Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-23T10:05:46.9087046Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-23T10:05:46.9088236Z       "requiredStages": [
2026-06-23T10:05:46.9088320Z         "int"
2026-06-23T10:05:46.9088406Z       ],
2026-06-23T10:05:46.9088487Z       "stages": {
2026-06-23T10:05:46.9088569Z         "doc": {
2026-06-23T10:05:46.9088663Z           "complete": false,
2026-06-23T10:05:46.9088754Z           "evidence": []
2026-06-23T10:05:46.9088841Z         },
2026-06-23T10:05:46.9088922Z         "impl": {
2026-06-23T10:05:46.9089107Z           "complete": false,
2026-06-23T10:05:46.9089198Z           "evidence": []
2026-06-23T10:05:46.9089279Z         },
2026-06-23T10:05:46.9089364Z         "int": {
2026-06-23T10:05:46.9089451Z           "complete": true,
2026-06-23T10:05:46.9089531Z           "evidence": [
2026-06-23T10:05:46.9089617Z             {
2026-06-23T10:05:46.9089747Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-23T10:05:46.9089832Z               "line": 300
2026-06-23T10:05:46.9089918Z             }
2026-06-23T10:05:46.9090003Z           ]
2026-06-23T10:05:46.9090090Z         },
2026-06-23T10:05:46.9090180Z         "unit": {
2026-06-23T10:05:46.9090279Z           "complete": false,
2026-06-23T10:05:46.9090372Z           "evidence": []
2026-06-23T10:05:46.9090457Z         }
2026-06-23T10:05:46.9090546Z       }
2026-06-23T10:05:46.9090623Z     },
2026-06-23T10:05:46.9090710Z     {
2026-06-23T10:05:46.9090819Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-23T10:05:46.9093301Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-23T10:05:46.9093541Z       "requiredStages": [
2026-06-23T10:05:46.9093628Z         "impl",
2026-06-23T10:05:46.9093714Z         "unit",
2026-06-23T10:05:46.9093794Z         "int"
2026-06-23T10:05:46.9093880Z       ],
2026-06-23T10:05:46.9093976Z       "stages": {
2026-06-23T10:05:46.9094061Z         "doc": {
2026-06-23T10:05:46.9094161Z           "complete": false,
2026-06-23T10:05:46.9094348Z           "evidence": []
2026-06-23T10:05:46.9094433Z         },
2026-06-23T10:05:46.9094520Z         "impl": {
2026-06-23T10:05:46.9094605Z           "complete": true,
2026-06-23T10:05:46.9094686Z           "evidence": [
2026-06-23T10:05:46.9094772Z             {
2026-06-23T10:05:46.9094887Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:46.9094986Z               "line": 257
2026-06-23T10:05:46.9095072Z             }
2026-06-23T10:05:46.9095159Z           ]
2026-06-23T10:05:46.9095235Z         },
2026-06-23T10:05:46.9095320Z         "int": {
2026-06-23T10:05:46.9095406Z           "complete": true,
2026-06-23T10:05:46.9095488Z           "evidence": [
2026-06-23T10:05:46.9095578Z             {
2026-06-23T10:05:46.9095702Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-23T10:05:46.9095789Z               "line": 93
2026-06-23T10:05:46.9095875Z             }
2026-06-23T10:05:46.9095963Z           ]
2026-06-23T10:05:46.9096048Z         },
2026-06-23T10:05:46.9096149Z         "unit": {
2026-06-23T10:05:46.9096248Z           "complete": true,
2026-06-23T10:05:46.9096328Z           "evidence": [
2026-06-23T10:05:46.9096418Z             {
2026-06-23T10:05:46.9096538Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:46.9096633Z               "line": 802
2026-06-23T10:05:46.9096718Z             },
2026-06-23T10:05:46.9096806Z             {
2026-06-23T10:05:46.9096929Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:46.9097019Z               "line": 824
2026-06-23T10:05:46.9097106Z             },
2026-06-23T10:05:46.9097191Z             {
2026-06-23T10:05:46.9097305Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:46.9097396Z               "line": 855
2026-06-23T10:05:46.9097477Z             }
2026-06-23T10:05:46.9097563Z           ]
2026-06-23T10:05:46.9097644Z         }
2026-06-23T10:05:46.9097730Z       }
2026-06-23T10:05:46.9097811Z     },
2026-06-23T10:05:46.9097901Z     {
2026-06-23T10:05:46.9098026Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-23T10:05:46.9100497Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-23T10:05:46.9100602Z       "requiredStages": [
2026-06-23T10:05:46.9100693Z         "doc",
2026-06-23T10:05:46.9100782Z         "impl",
2026-06-23T10:05:46.9100864Z         "unit",
2026-06-23T10:05:46.9100951Z         "int"
2026-06-23T10:05:46.9101036Z       ],
2026-06-23T10:05:46.9101131Z       "stages": {
2026-06-23T10:05:46.9101208Z         "doc": {
2026-06-23T10:05:46.9101304Z           "complete": true,
2026-06-23T10:05:46.9101388Z           "evidence": [
2026-06-23T10:05:46.9101578Z             {
2026-06-23T10:05:46.9101689Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9101778Z               "line": 333
2026-06-23T10:05:46.9101868Z             }
2026-06-23T10:05:46.9101956Z           ]
2026-06-23T10:05:46.9102037Z         },
2026-06-23T10:05:46.9102126Z         "impl": {
2026-06-23T10:05:46.9102218Z           "complete": true,
2026-06-23T10:05:46.9102303Z           "evidence": [
2026-06-23T10:05:46.9102384Z             {
2026-06-23T10:05:46.9102517Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9102604Z               "line": 494
2026-06-23T10:05:46.9102789Z             },
2026-06-23T10:05:46.9102876Z             {
2026-06-23T10:05:46.9103003Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9103099Z               "line": 499
2026-06-23T10:05:46.9103186Z             },
2026-06-23T10:05:46.9103267Z             {
2026-06-23T10:05:46.9103390Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9103481Z               "line": 874
2026-06-23T10:05:46.9103563Z             },
2026-06-23T10:05:46.9103647Z             {
2026-06-23T10:05:46.9103765Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9103847Z               "line": 915
2026-06-23T10:05:46.9106486Z             },
2026-06-23T10:05:46.9106595Z             {
2026-06-23T10:05:46.9106743Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9106840Z               "line": 926
2026-06-23T10:05:46.9106931Z             },
2026-06-23T10:05:46.9107016Z             {
2026-06-23T10:05:46.9107146Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:46.9107245Z               "line": 358
2026-06-23T10:05:46.9107322Z             }
2026-06-23T10:05:46.9107403Z           ]
2026-06-23T10:05:46.9107484Z         },
2026-06-23T10:05:46.9107570Z         "int": {
2026-06-23T10:05:46.9107666Z           "complete": true,
2026-06-23T10:05:46.9107751Z           "evidence": [
2026-06-23T10:05:46.9107837Z             {
2026-06-23T10:05:46.9107970Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-23T10:05:46.9108061Z               "line": 30
2026-06-23T10:05:46.9108137Z             }
2026-06-23T10:05:46.9108218Z           ]
2026-06-23T10:05:46.9108305Z         },
2026-06-23T10:05:46.9108390Z         "unit": {
2026-06-23T10:05:46.9108485Z           "complete": true,
2026-06-23T10:05:46.9108566Z           "evidence": [
2026-06-23T10:05:46.9108654Z             {
2026-06-23T10:05:46.9108776Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9108876Z               "line": 1493
2026-06-23T10:05:46.9109030Z             },
2026-06-23T10:05:46.9109100Z             {
2026-06-23T10:05:46.9109228Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9109314Z               "line": 1518
2026-06-23T10:05:46.9109393Z             },
2026-06-23T10:05:46.9109478Z             {
2026-06-23T10:05:46.9109598Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9109689Z               "line": 1535
2026-06-23T10:05:46.9109770Z             },
2026-06-23T10:05:46.9109850Z             {
2026-06-23T10:05:46.9109966Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9110051Z               "line": 1578
2026-06-23T10:05:46.9110136Z             }
2026-06-23T10:05:46.9110228Z           ]
2026-06-23T10:05:46.9110313Z         }
2026-06-23T10:05:46.9110394Z       }
2026-06-23T10:05:46.9110479Z     },
2026-06-23T10:05:46.9110562Z     {
2026-06-23T10:05:46.9110709Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-23T10:05:46.9113264Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-23T10:05:46.9113508Z       "requiredStages": [],
2026-06-23T10:05:46.9113707Z       "stages": {
2026-06-23T10:05:46.9113789Z         "doc": {
2026-06-23T10:05:46.9113878Z           "complete": false,
2026-06-23T10:05:46.9113973Z           "evidence": []
2026-06-23T10:05:46.9114056Z         },
2026-06-23T10:05:46.9114137Z         "impl": {
2026-06-23T10:05:46.9114226Z           "complete": false,
2026-06-23T10:05:46.9114321Z           "evidence": []
2026-06-23T10:05:46.9114411Z         },
2026-06-23T10:05:46.9114492Z         "int": {
2026-06-23T10:05:46.9114586Z           "complete": false,
2026-06-23T10:05:46.9114671Z           "evidence": []
2026-06-23T10:05:46.9114758Z         },
2026-06-23T10:05:46.9114839Z         "unit": {
2026-06-23T10:05:46.9114933Z           "complete": false,
2026-06-23T10:05:46.9115025Z           "evidence": []
2026-06-23T10:05:46.9115096Z         }
2026-06-23T10:05:46.9115182Z       }
2026-06-23T10:05:46.9115267Z     },
2026-06-23T10:05:46.9115349Z     {
2026-06-23T10:05:46.9115483Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-23T10:05:46.9119190Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-23T10:05:46.9119298Z       "requiredStages": [
2026-06-23T10:05:46.9119389Z         "impl",
2026-06-23T10:05:46.9119476Z         "unit",
2026-06-23T10:05:46.9119561Z         "int"
2026-06-23T10:05:46.9119641Z       ],
2026-06-23T10:05:46.9119731Z       "stages": {
2026-06-23T10:05:46.9119821Z         "doc": {
2026-06-23T10:05:46.9119911Z           "complete": false,
2026-06-23T10:05:46.9120005Z           "evidence": []
2026-06-23T10:05:46.9120086Z         },
2026-06-23T10:05:46.9120177Z         "impl": {
2026-06-23T10:05:46.9120254Z           "complete": true,
2026-06-23T10:05:46.9120353Z           "evidence": [
2026-06-23T10:05:46.9120439Z             {
2026-06-23T10:05:46.9120568Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9120668Z               "line": 585
2026-06-23T10:05:46.9120754Z             },
2026-06-23T10:05:46.9120835Z             {
2026-06-23T10:05:46.9120954Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9121044Z               "line": 609
2026-06-23T10:05:46.9121127Z             },
2026-06-23T10:05:46.9121316Z             {
2026-06-23T10:05:46.9121437Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9121527Z               "line": 635
2026-06-23T10:05:46.9121608Z             },
2026-06-23T10:05:46.9121683Z             {
2026-06-23T10:05:46.9121799Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9121884Z               "line": 654
2026-06-23T10:05:46.9121965Z             },
2026-06-23T10:05:46.9122052Z             {
2026-06-23T10:05:46.9122161Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9122256Z               "line": 730
2026-06-23T10:05:46.9122438Z             },
2026-06-23T10:05:46.9122508Z             {
2026-06-23T10:05:46.9122621Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T10:05:46.9122718Z               "line": 89
2026-06-23T10:05:46.9122804Z             },
2026-06-23T10:05:46.9122885Z             {
2026-06-23T10:05:46.9122989Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T10:05:46.9123090Z               "line": 134
2026-06-23T10:05:46.9123166Z             }
2026-06-23T10:05:46.9123251Z           ]
2026-06-23T10:05:46.9123338Z         },
2026-06-23T10:05:46.9123424Z         "int": {
2026-06-23T10:05:46.9123514Z           "complete": true,
2026-06-23T10:05:46.9123604Z           "evidence": [
2026-06-23T10:05:46.9123691Z             {
2026-06-23T10:05:46.9123843Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-23T10:05:46.9123933Z               "line": 20
2026-06-23T10:05:46.9124020Z             }
2026-06-23T10:05:46.9124110Z           ]
2026-06-23T10:05:46.9124200Z         },
2026-06-23T10:05:46.9124297Z         "unit": {
2026-06-23T10:05:46.9124382Z           "complete": true,
2026-06-23T10:05:46.9124467Z           "evidence": [
2026-06-23T10:05:46.9124553Z             {
2026-06-23T10:05:46.9124659Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9124748Z               "line": 1148
2026-06-23T10:05:46.9124838Z             },
2026-06-23T10:05:46.9124919Z             {
2026-06-23T10:05:46.9125033Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T10:05:46.9125117Z               "line": 445
2026-06-23T10:05:46.9125203Z             }
2026-06-23T10:05:46.9125289Z           ]
2026-06-23T10:05:46.9125371Z         }
2026-06-23T10:05:46.9125460Z       }
2026-06-23T10:05:46.9125551Z     },
2026-06-23T10:05:46.9125633Z     {
2026-06-23T10:05:46.9125761Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-23T10:05:46.9128276Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-23T10:05:46.9128399Z       "requiredStages": [
2026-06-23T10:05:46.9128486Z         "doc",
2026-06-23T10:05:46.9128571Z         "impl",
2026-06-23T10:05:46.9128656Z         "unit",
2026-06-23T10:05:46.9128742Z         "int"
2026-06-23T10:05:46.9128825Z       ],
2026-06-23T10:05:46.9128905Z       "stages": {
2026-06-23T10:05:46.9129052Z         "doc": {
2026-06-23T10:05:46.9129149Z           "complete": true,
2026-06-23T10:05:46.9129233Z           "evidence": [
2026-06-23T10:05:46.9129319Z             {
2026-06-23T10:05:46.9129420Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9129511Z               "line": 302
2026-06-23T10:05:46.9129706Z             }
2026-06-23T10:05:46.9129793Z           ]
2026-06-23T10:05:46.9129877Z         },
2026-06-23T10:05:46.9129973Z         "impl": {
2026-06-23T10:05:46.9130069Z           "complete": true,
2026-06-23T10:05:46.9130154Z           "evidence": [
2026-06-23T10:05:46.9130244Z             {
2026-06-23T10:05:46.9130367Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T10:05:46.9130453Z               "line": 108
2026-06-23T10:05:46.9130541Z             },
2026-06-23T10:05:46.9130622Z             {
2026-06-23T10:05:46.9130742Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9130932Z               "line": 921
2026-06-23T10:05:46.9131018Z             },
2026-06-23T10:05:46.9131095Z             {
2026-06-23T10:05:46.9131213Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9131299Z               "line": 1165
2026-06-23T10:05:46.9131382Z             },
2026-06-23T10:05:46.9131467Z             {
2026-06-23T10:05:46.9131590Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9131687Z               "line": 23
2026-06-23T10:05:46.9131772Z             },
2026-06-23T10:05:46.9131857Z             {
2026-06-23T10:05:46.9131972Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9132067Z               "line": 113
2026-06-23T10:05:46.9132148Z             },
2026-06-23T10:05:46.9132229Z             {
2026-06-23T10:05:46.9132345Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9132434Z               "line": 158
2026-06-23T10:05:46.9132515Z             },
2026-06-23T10:05:46.9132598Z             {
2026-06-23T10:05:46.9132721Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9132806Z               "line": 218
2026-06-23T10:05:46.9132893Z             },
2026-06-23T10:05:46.9132980Z             {
2026-06-23T10:05:46.9133092Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9133191Z               "line": 261
2026-06-23T10:05:46.9133278Z             },
2026-06-23T10:05:46.9133364Z             {
2026-06-23T10:05:46.9133487Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9133568Z               "line": 275
2026-06-23T10:05:46.9133645Z             },
2026-06-23T10:05:46.9133731Z             {
2026-06-23T10:05:46.9133849Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9133936Z               "line": 320
2026-06-23T10:05:46.9134012Z             },
2026-06-23T10:05:46.9134097Z             {
2026-06-23T10:05:46.9134212Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9134313Z               "line": 347
2026-06-23T10:05:46.9134394Z             },
2026-06-23T10:05:46.9134479Z             {
2026-06-23T10:05:46.9134604Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9134689Z               "line": 359
2026-06-23T10:05:46.9134775Z             },
2026-06-23T10:05:46.9134857Z             {
2026-06-23T10:05:46.9134975Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9135066Z               "line": 373
2026-06-23T10:05:46.9135152Z             },
2026-06-23T10:05:46.9135234Z             {
2026-06-23T10:05:46.9135347Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9135437Z               "line": 400
2026-06-23T10:05:46.9135518Z             },
2026-06-23T10:05:46.9135607Z             {
2026-06-23T10:05:46.9135720Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9135811Z               "line": 643
2026-06-23T10:05:46.9135902Z             },
2026-06-23T10:05:46.9135988Z             {
2026-06-23T10:05:46.9136106Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9136193Z               "line": 989
2026-06-23T10:05:46.9136279Z             },
2026-06-23T10:05:46.9136349Z             {
2026-06-23T10:05:46.9136474Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9136650Z               "line": 275
2026-06-23T10:05:46.9136731Z             },
2026-06-23T10:05:46.9136822Z             {
2026-06-23T10:05:46.9136941Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9137031Z               "line": 1284
2026-06-23T10:05:46.9137114Z             },
2026-06-23T10:05:46.9137194Z             {
2026-06-23T10:05:46.9137313Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9137399Z               "line": 1386
2026-06-23T10:05:46.9137481Z             },
2026-06-23T10:05:46.9137565Z             {
2026-06-23T10:05:46.9137690Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9137852Z               "line": 1398
2026-06-23T10:05:46.9137938Z             },
2026-06-23T10:05:46.9138029Z             {
2026-06-23T10:05:46.9138134Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9138223Z               "line": 1993
2026-06-23T10:05:46.9138308Z             },
2026-06-23T10:05:46.9138399Z             {
2026-06-23T10:05:46.9138512Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9138601Z               "line": 188
2026-06-23T10:05:46.9138683Z             },
2026-06-23T10:05:46.9138774Z             {
2026-06-23T10:05:46.9138888Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9139036Z               "line": 265
2026-06-23T10:05:46.9139122Z             },
2026-06-23T10:05:46.9139207Z             {
2026-06-23T10:05:46.9139312Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9139399Z               "line": 276
2026-06-23T10:05:46.9139485Z             },
2026-06-23T10:05:46.9139574Z             {
2026-06-23T10:05:46.9139680Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9139779Z               "line": 329
2026-06-23T10:05:46.9139865Z             },
2026-06-23T10:05:46.9139946Z             {
2026-06-23T10:05:46.9140071Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T10:05:46.9140156Z               "line": 56
2026-06-23T10:05:46.9140237Z             },
2026-06-23T10:05:46.9140319Z             {
2026-06-23T10:05:46.9140437Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T10:05:46.9140528Z               "line": 188
2026-06-23T10:05:46.9140615Z             },
2026-06-23T10:05:46.9140696Z             {
2026-06-23T10:05:46.9140808Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-23T10:05:46.9140903Z               "line": 82
2026-06-23T10:05:46.9140985Z             },
2026-06-23T10:05:46.9141074Z             {
2026-06-23T10:05:46.9141197Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.9141288Z               "line": 506
2026-06-23T10:05:46.9141375Z             },
2026-06-23T10:05:46.9141459Z             {
2026-06-23T10:05:46.9141569Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:46.9141655Z               "line": 424
2026-06-23T10:05:46.9141741Z             },
2026-06-23T10:05:46.9141826Z             {
2026-06-23T10:05:46.9141937Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9142037Z               "line": 2360
2026-06-23T10:05:46.9142122Z             }
2026-06-23T10:05:46.9142204Z           ]
2026-06-23T10:05:46.9142290Z         },
2026-06-23T10:05:46.9142375Z         "int": {
2026-06-23T10:05:46.9142475Z           "complete": true,
2026-06-23T10:05:46.9142562Z           "evidence": [
2026-06-23T10:05:46.9142647Z             {
2026-06-23T10:05:46.9142756Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-23T10:05:46.9142843Z               "line": 57
2026-06-23T10:05:46.9142924Z             },
2026-06-23T10:05:46.9143004Z             {
2026-06-23T10:05:46.9143119Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-23T10:05:46.9143206Z               "line": 41
2026-06-23T10:05:46.9143295Z             }
2026-06-23T10:05:46.9143376Z           ]
2026-06-23T10:05:46.9143463Z         },
2026-06-23T10:05:46.9143540Z         "unit": {
2026-06-23T10:05:46.9143746Z           "complete": true,
2026-06-23T10:05:46.9143843Z           "evidence": [
2026-06-23T10:05:46.9143920Z             {
2026-06-23T10:05:46.9144043Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T10:05:46.9144128Z               "line": 532
2026-06-23T10:05:46.9144215Z             },
2026-06-23T10:05:46.9144300Z             {
2026-06-23T10:05:46.9144414Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T10:05:46.9144506Z               "line": 759
2026-06-23T10:05:46.9144592Z             },
2026-06-23T10:05:46.9144681Z             {
2026-06-23T10:05:46.9144897Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9144991Z               "line": 1067
2026-06-23T10:05:46.9145073Z             },
2026-06-23T10:05:46.9145154Z             {
2026-06-23T10:05:46.9145273Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9145363Z               "line": 1101
2026-06-23T10:05:46.9145451Z             },
2026-06-23T10:05:46.9145540Z             {
2026-06-23T10:05:46.9145659Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9145751Z               "line": 1143
2026-06-23T10:05:46.9145826Z             },
2026-06-23T10:05:46.9145916Z             {
2026-06-23T10:05:46.9146030Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9146125Z               "line": 1215
2026-06-23T10:05:46.9146214Z             },
2026-06-23T10:05:46.9146304Z             {
2026-06-23T10:05:46.9146424Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9146520Z               "line": 1228
2026-06-23T10:05:46.9146609Z             },
2026-06-23T10:05:46.9146690Z             {
2026-06-23T10:05:46.9146815Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9146895Z               "line": 1251
2026-06-23T10:05:46.9146986Z             },
2026-06-23T10:05:46.9147068Z             {
2026-06-23T10:05:46.9147182Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9147281Z               "line": 1277
2026-06-23T10:05:46.9147364Z             },
2026-06-23T10:05:46.9147444Z             {
2026-06-23T10:05:46.9147563Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9147654Z               "line": 1291
2026-06-23T10:05:46.9147745Z             },
2026-06-23T10:05:46.9147821Z             {
2026-06-23T10:05:46.9147930Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9148017Z               "line": 1315
2026-06-23T10:05:46.9148102Z             },
2026-06-23T10:05:46.9148188Z             {
2026-06-23T10:05:46.9148318Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9148412Z               "line": 1447
2026-06-23T10:05:46.9148498Z             },
2026-06-23T10:05:46.9148584Z             {
2026-06-23T10:05:46.9148704Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9148793Z               "line": 1623
2026-06-23T10:05:46.9148883Z             },
2026-06-23T10:05:46.9149053Z             {
2026-06-23T10:05:46.9149176Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9149262Z               "line": 1678
2026-06-23T10:05:46.9149348Z             },
2026-06-23T10:05:46.9149429Z             {
2026-06-23T10:05:46.9149557Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9149644Z               "line": 1724
2026-06-23T10:05:46.9149725Z             },
2026-06-23T10:05:46.9149805Z             {
2026-06-23T10:05:46.9149925Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9150015Z               "line": 1769
2026-06-23T10:05:46.9150101Z             },
2026-06-23T10:05:46.9150178Z             {
2026-06-23T10:05:46.9150293Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9150383Z               "line": 1813
2026-06-23T10:05:46.9150468Z             },
2026-06-23T10:05:46.9150555Z             {
2026-06-23T10:05:46.9150783Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9150870Z               "line": 1855
2026-06-23T10:05:46.9150960Z             },
2026-06-23T10:05:46.9151040Z             {
2026-06-23T10:05:46.9151151Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9151251Z               "line": 2423
2026-06-23T10:05:46.9151336Z             },
2026-06-23T10:05:46.9151421Z             {
2026-06-23T10:05:46.9151535Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T10:05:46.9151630Z               "line": 217
2026-06-23T10:05:46.9151857Z             },
2026-06-23T10:05:46.9151949Z             {
2026-06-23T10:05:46.9152072Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T10:05:46.9152148Z               "line": 233
2026-06-23T10:05:46.9152239Z             },
2026-06-23T10:05:46.9152324Z             {
2026-06-23T10:05:46.9152444Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T10:05:46.9152535Z               "line": 254
2026-06-23T10:05:46.9152625Z             },
2026-06-23T10:05:46.9152715Z             {
2026-06-23T10:05:46.9152831Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T10:05:46.9152911Z               "line": 265
2026-06-23T10:05:46.9152991Z             },
2026-06-23T10:05:46.9153083Z             {
2026-06-23T10:05:46.9153207Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T10:05:46.9153292Z               "line": 278
2026-06-23T10:05:46.9153383Z             },
2026-06-23T10:05:46.9153465Z             {
2026-06-23T10:05:46.9153578Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T10:05:46.9153679Z               "line": 289
2026-06-23T10:05:46.9153751Z             },
2026-06-23T10:05:46.9153837Z             {
2026-06-23T10:05:46.9153955Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T10:05:46.9154043Z               "line": 301
2026-06-23T10:05:46.9154124Z             },
2026-06-23T10:05:46.9154217Z             {
2026-06-23T10:05:46.9154345Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T10:05:46.9154446Z               "line": 312
2026-06-23T10:05:46.9154536Z             },
2026-06-23T10:05:46.9154617Z             {
2026-06-23T10:05:46.9154747Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T10:05:46.9154833Z               "line": 323
2026-06-23T10:05:46.9154917Z             },
2026-06-23T10:05:46.9154999Z             {
2026-06-23T10:05:46.9155113Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T10:05:46.9155203Z               "line": 332
2026-06-23T10:05:46.9155284Z             },
2026-06-23T10:05:46.9155372Z             {
2026-06-23T10:05:46.9155485Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T10:05:46.9155570Z               "line": 342
2026-06-23T10:05:46.9155657Z             },
2026-06-23T10:05:46.9155738Z             {
2026-06-23T10:05:46.9155857Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T10:05:46.9155943Z               "line": 358
2026-06-23T10:05:46.9156034Z             },
2026-06-23T10:05:46.9156119Z             {
2026-06-23T10:05:46.9156238Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.9156335Z               "line": 969
2026-06-23T10:05:46.9156414Z             },
2026-06-23T10:05:46.9156505Z             {
2026-06-23T10:05:46.9156623Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.9156723Z               "line": 1005
2026-06-23T10:05:46.9156807Z             },
2026-06-23T10:05:46.9156902Z             {
2026-06-23T10:05:46.9157032Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:46.9157122Z               "line": 966
2026-06-23T10:05:46.9157217Z             },
2026-06-23T10:05:46.9157304Z             {
2026-06-23T10:05:46.9157422Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-23T10:05:46.9157517Z               "line": 147
2026-06-23T10:05:46.9157609Z             },
2026-06-23T10:05:46.9157799Z             {
2026-06-23T10:05:46.9157915Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-23T10:05:46.9158009Z               "line": 226
2026-06-23T10:05:46.9158095Z             },
2026-06-23T10:05:46.9158190Z             {
2026-06-23T10:05:46.9158305Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-23T10:05:46.9158400Z               "line": 295
2026-06-23T10:05:46.9158495Z             },
2026-06-23T10:05:46.9158587Z             {
2026-06-23T10:05:46.9158709Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-23T10:05:46.9158800Z               "line": 17
2026-06-23T10:05:46.9159043Z             },
2026-06-23T10:05:46.9159135Z             {
2026-06-23T10:05:46.9159254Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-23T10:05:46.9159348Z               "line": 104
2026-06-23T10:05:46.9159433Z             }
2026-06-23T10:05:46.9159524Z           ]
2026-06-23T10:05:46.9159609Z         }
2026-06-23T10:05:46.9159698Z       }
2026-06-23T10:05:46.9159798Z     },
2026-06-23T10:05:46.9159880Z     {
2026-06-23T10:05:46.9159999Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-23T10:05:46.9162966Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-23T10:05:46.9163081Z       "requiredStages": [
2026-06-23T10:05:46.9163176Z         "doc",
2026-06-23T10:05:46.9163256Z         "impl",
2026-06-23T10:05:46.9163339Z         "unit",
2026-06-23T10:05:46.9163424Z         "int"
2026-06-23T10:05:46.9163505Z       ],
2026-06-23T10:05:46.9163600Z       "stages": {
2026-06-23T10:05:46.9163682Z         "doc": {
2026-06-23T10:05:46.9163777Z           "complete": true,
2026-06-23T10:05:46.9163862Z           "evidence": [
2026-06-23T10:05:46.9163948Z             {
2026-06-23T10:05:46.9164059Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9164143Z               "line": 388
2026-06-23T10:05:46.9164229Z             }
2026-06-23T10:05:46.9164316Z           ]
2026-06-23T10:05:46.9164406Z         },
2026-06-23T10:05:46.9164492Z         "impl": {
2026-06-23T10:05:46.9164583Z           "complete": true,
2026-06-23T10:05:46.9164679Z           "evidence": [
2026-06-23T10:05:46.9164763Z             {
2026-06-23T10:05:46.9164890Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:46.9164982Z               "line": 773
2026-06-23T10:05:46.9165069Z             },
2026-06-23T10:05:46.9165158Z             {
2026-06-23T10:05:46.9165282Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:46.9165368Z               "line": 796
2026-06-23T10:05:46.9165453Z             }
2026-06-23T10:05:46.9165539Z           ]
2026-06-23T10:05:46.9165627Z         },
2026-06-23T10:05:46.9165717Z         "int": {
2026-06-23T10:05:46.9165806Z           "complete": true,
2026-06-23T10:05:46.9165902Z           "evidence": [
2026-06-23T10:05:46.9165997Z             {
2026-06-23T10:05:46.9166130Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-23T10:05:46.9166227Z               "line": 228
2026-06-23T10:05:46.9166431Z             },
2026-06-23T10:05:46.9166513Z             {
2026-06-23T10:05:46.9166637Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-23T10:05:46.9166727Z               "line": 468
2026-06-23T10:05:46.9166808Z             }
2026-06-23T10:05:46.9166895Z           ]
2026-06-23T10:05:46.9166979Z         },
2026-06-23T10:05:46.9167065Z         "unit": {
2026-06-23T10:05:46.9167160Z           "complete": true,
2026-06-23T10:05:46.9167236Z           "evidence": [
2026-06-23T10:05:46.9167320Z             {
2026-06-23T10:05:46.9167443Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:46.9167630Z               "line": 1495
2026-06-23T10:05:46.9167710Z             }
2026-06-23T10:05:46.9167792Z           ]
2026-06-23T10:05:46.9167869Z         }
2026-06-23T10:05:46.9167950Z       }
2026-06-23T10:05:46.9168039Z     },
2026-06-23T10:05:46.9168111Z     {
2026-06-23T10:05:46.9168235Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-23T10:05:46.9171822Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-23T10:05:46.9171952Z       "requiredStages": [
2026-06-23T10:05:46.9172033Z         "doc",
2026-06-23T10:05:46.9172122Z         "impl",
2026-06-23T10:05:46.9172204Z         "unit"
2026-06-23T10:05:46.9172291Z       ],
2026-06-23T10:05:46.9172371Z       "stages": {
2026-06-23T10:05:46.9172456Z         "doc": {
2026-06-23T10:05:46.9172546Z           "complete": true,
2026-06-23T10:05:46.9172632Z           "evidence": [
2026-06-23T10:05:46.9172722Z             {
2026-06-23T10:05:46.9172829Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9172920Z               "line": 395
2026-06-23T10:05:46.9173007Z             }
2026-06-23T10:05:46.9173083Z           ]
2026-06-23T10:05:46.9173163Z         },
2026-06-23T10:05:46.9173239Z         "impl": {
2026-06-23T10:05:46.9173346Z           "complete": true,
2026-06-23T10:05:46.9173436Z           "evidence": [
2026-06-23T10:05:46.9173521Z             {
2026-06-23T10:05:46.9173641Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:46.9173727Z               "line": 75
2026-06-23T10:05:46.9173816Z             }
2026-06-23T10:05:46.9173899Z           ]
2026-06-23T10:05:46.9173989Z         },
2026-06-23T10:05:46.9174070Z         "int": {
2026-06-23T10:05:46.9174170Z           "complete": false,
2026-06-23T10:05:46.9174266Z           "evidence": []
2026-06-23T10:05:46.9174351Z         },
2026-06-23T10:05:46.9174437Z         "unit": {
2026-06-23T10:05:46.9174523Z           "complete": true,
2026-06-23T10:05:46.9174614Z           "evidence": [
2026-06-23T10:05:46.9174708Z             {
2026-06-23T10:05:46.9174814Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:46.9174915Z               "line": 632
2026-06-23T10:05:46.9174999Z             }
2026-06-23T10:05:46.9175085Z           ]
2026-06-23T10:05:46.9175267Z         }
2026-06-23T10:05:46.9175351Z       }
2026-06-23T10:05:46.9175437Z     },
2026-06-23T10:05:46.9175523Z     {
2026-06-23T10:05:46.9175634Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-23T10:05:46.9175804Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-23T10:05:46.9175905Z       "requiredStages": [
2026-06-23T10:05:46.9175986Z         "impl",
2026-06-23T10:05:46.9176076Z         "unit"
2026-06-23T10:05:46.9176153Z       ],
2026-06-23T10:05:46.9176243Z       "stages": {
2026-06-23T10:05:46.9176329Z         "doc": {
2026-06-23T10:05:46.9176414Z           "complete": false,
2026-06-23T10:05:46.9176610Z           "evidence": []
2026-06-23T10:05:46.9176695Z         },
2026-06-23T10:05:46.9176787Z         "impl": {
2026-06-23T10:05:46.9176882Z           "complete": true,
2026-06-23T10:05:46.9176968Z           "evidence": [
2026-06-23T10:05:46.9177063Z             {
2026-06-23T10:05:46.9177178Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.9177272Z               "line": 172
2026-06-23T10:05:46.9177354Z             },
2026-06-23T10:05:46.9177455Z             {
2026-06-23T10:05:46.9177577Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T10:05:46.9177658Z               "line": 18
2026-06-23T10:05:46.9177739Z             },
2026-06-23T10:05:46.9177825Z             {
2026-06-23T10:05:46.9177937Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T10:05:46.9178017Z               "line": 100
2026-06-23T10:05:46.9178109Z             }
2026-06-23T10:05:46.9178195Z           ]
2026-06-23T10:05:46.9178280Z         },
2026-06-23T10:05:46.9178371Z         "int": {
2026-06-23T10:05:46.9178457Z           "complete": false,
2026-06-23T10:05:46.9178552Z           "evidence": []
2026-06-23T10:05:46.9178638Z         },
2026-06-23T10:05:46.9178715Z         "unit": {
2026-06-23T10:05:46.9178815Z           "complete": true,
2026-06-23T10:05:46.9178909Z           "evidence": [
2026-06-23T10:05:46.9179082Z             {
2026-06-23T10:05:46.9179205Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.9179291Z               "line": 857
2026-06-23T10:05:46.9179378Z             },
2026-06-23T10:05:46.9179463Z             {
2026-06-23T10:05:46.9179572Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T10:05:46.9179664Z               "line": 161
2026-06-23T10:05:46.9179749Z             },
2026-06-23T10:05:46.9179835Z             {
2026-06-23T10:05:46.9179940Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T10:05:46.9180027Z               "line": 233
2026-06-23T10:05:46.9180101Z             }
2026-06-23T10:05:46.9180197Z           ]
2026-06-23T10:05:46.9180275Z         }
2026-06-23T10:05:46.9180361Z       }
2026-06-23T10:05:46.9180440Z     },
2026-06-23T10:05:46.9180520Z     {
2026-06-23T10:05:46.9180635Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-23T10:05:46.9181048Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-23T10:05:46.9181157Z       "requiredStages": [
2026-06-23T10:05:46.9181248Z         "impl",
2026-06-23T10:05:46.9181329Z         "unit"
2026-06-23T10:05:46.9181415Z       ],
2026-06-23T10:05:46.9181495Z       "stages": {
2026-06-23T10:05:46.9181587Z         "doc": {
2026-06-23T10:05:46.9181677Z           "complete": true,
2026-06-23T10:05:46.9181767Z           "evidence": [
2026-06-23T10:05:46.9181853Z             {
2026-06-23T10:05:46.9181968Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9182054Z               "line": 220
2026-06-23T10:05:46.9182144Z             }
2026-06-23T10:05:46.9182236Z           ]
2026-06-23T10:05:46.9182316Z         },
2026-06-23T10:05:46.9182406Z         "impl": {
2026-06-23T10:05:46.9182492Z           "complete": true,
2026-06-23T10:05:46.9182589Z           "evidence": [
2026-06-23T10:05:46.9182673Z             {
2026-06-23T10:05:46.9182807Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:46.9183011Z               "line": 318
2026-06-23T10:05:46.9183092Z             },
2026-06-23T10:05:46.9183177Z             {
2026-06-23T10:05:46.9183300Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:46.9183399Z               "line": 359
2026-06-23T10:05:46.9183475Z             },
2026-06-23T10:05:46.9183562Z             {
2026-06-23T10:05:46.9183681Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:46.9183771Z               "line": 581
2026-06-23T10:05:46.9183853Z             },
2026-06-23T10:05:46.9183939Z             {
2026-06-23T10:05:46.9184163Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-23T10:05:46.9184249Z               "line": 77
2026-06-23T10:05:46.9184329Z             }
2026-06-23T10:05:46.9186970Z           ]
2026-06-23T10:05:46.9187085Z         },
2026-06-23T10:05:46.9187180Z         "int": {
2026-06-23T10:05:46.9187284Z           "complete": false,
2026-06-23T10:05:46.9187386Z           "evidence": []
2026-06-23T10:05:46.9187466Z         },
2026-06-23T10:05:46.9187551Z         "unit": {
2026-06-23T10:05:46.9187648Z           "complete": true,
2026-06-23T10:05:46.9187729Z           "evidence": [
2026-06-23T10:05:46.9187809Z             {
2026-06-23T10:05:46.9187938Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:46.9188025Z               "line": 750
2026-06-23T10:05:46.9188109Z             },
2026-06-23T10:05:46.9188199Z             {
2026-06-23T10:05:46.9188323Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:46.9188408Z               "line": 788
2026-06-23T10:05:46.9188502Z             },
2026-06-23T10:05:46.9188577Z             {
2026-06-23T10:05:46.9188707Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-23T10:05:46.9188797Z               "line": 166
2026-06-23T10:05:46.9188878Z             }
2026-06-23T10:05:46.9189036Z           ]
2026-06-23T10:05:46.9189108Z         }
2026-06-23T10:05:46.9189193Z       }
2026-06-23T10:05:46.9189280Z     },
2026-06-23T10:05:46.9189370Z     {
2026-06-23T10:05:46.9189498Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-23T10:05:46.9190037Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-23T10:05:46.9190142Z       "requiredStages": [
2026-06-23T10:05:46.9190229Z         "impl",
2026-06-23T10:05:46.9190319Z         "unit"
2026-06-23T10:05:46.9190395Z       ],
2026-06-23T10:05:46.9190476Z       "stages": {
2026-06-23T10:05:46.9190558Z         "doc": {
2026-06-23T10:05:46.9190639Z           "complete": false,
2026-06-23T10:05:46.9190729Z           "evidence": []
2026-06-23T10:05:46.9190810Z         },
2026-06-23T10:05:46.9190897Z         "impl": {
2026-06-23T10:05:46.9190991Z           "complete": true,
2026-06-23T10:05:46.9191076Z           "evidence": [
2026-06-23T10:05:46.9191162Z             {
2026-06-23T10:05:46.9191299Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-23T10:05:46.9191393Z               "line": 22
2026-06-23T10:05:46.9191474Z             },
2026-06-23T10:05:46.9191560Z             {
2026-06-23T10:05:46.9191669Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T10:05:46.9191755Z               "line": 487
2026-06-23T10:05:46.9191837Z             },
2026-06-23T10:05:46.9191922Z             {
2026-06-23T10:05:46.9192046Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-23T10:05:46.9192128Z               "line": 17
2026-06-23T10:05:46.9192213Z             },
2026-06-23T10:05:46.9192299Z             {
2026-06-23T10:05:46.9192408Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-23T10:05:46.9192500Z               "line": 147
2026-06-23T10:05:46.9192585Z             },
2026-06-23T10:05:46.9192666Z             {
2026-06-23T10:05:46.9192796Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:46.9193019Z               "line": 226
2026-06-23T10:05:46.9193096Z             },
2026-06-23T10:05:46.9193186Z             {
2026-06-23T10:05:46.9193305Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:46.9193397Z               "line": 251
2026-06-23T10:05:46.9193482Z             },
2026-06-23T10:05:46.9193571Z             {
2026-06-23T10:05:46.9193694Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:46.9193771Z               "line": 277
2026-06-23T10:05:46.9193860Z             },
2026-06-23T10:05:46.9193946Z             {
2026-06-23T10:05:46.9194166Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T10:05:46.9194255Z               "line": 124
2026-06-23T10:05:46.9194341Z             },
2026-06-23T10:05:46.9194427Z             {
2026-06-23T10:05:46.9194542Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T10:05:46.9194631Z               "line": 224
2026-06-23T10:05:46.9194719Z             }
2026-06-23T10:05:46.9194804Z           ]
2026-06-23T10:05:46.9194889Z         },
2026-06-23T10:05:46.9194970Z         "int": {
2026-06-23T10:05:46.9195062Z           "complete": false,
2026-06-23T10:05:46.9195147Z           "evidence": []
2026-06-23T10:05:46.9195232Z         },
2026-06-23T10:05:46.9195319Z         "unit": {
2026-06-23T10:05:46.9195405Z           "complete": true,
2026-06-23T10:05:46.9195490Z           "evidence": [
2026-06-23T10:05:46.9195581Z             {
2026-06-23T10:05:46.9195701Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-23T10:05:46.9195781Z               "line": 63
2026-06-23T10:05:46.9195867Z             },
2026-06-23T10:05:46.9195949Z             {
2026-06-23T10:05:46.9196063Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-23T10:05:46.9196153Z               "line": 73
2026-06-23T10:05:46.9196239Z             },
2026-06-23T10:05:46.9196326Z             {
2026-06-23T10:05:46.9196443Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-23T10:05:46.9196542Z               "line": 85
2026-06-23T10:05:46.9196634Z             },
2026-06-23T10:05:46.9196720Z             {
2026-06-23T10:05:46.9196838Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-23T10:05:46.9196919Z               "line": 346
2026-06-23T10:05:46.9196997Z             },
2026-06-23T10:05:46.9197078Z             {
2026-06-23T10:05:46.9197205Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-23T10:05:46.9197297Z               "line": 281
2026-06-23T10:05:46.9197378Z             },
2026-06-23T10:05:46.9197463Z             {
2026-06-23T10:05:46.9197578Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-23T10:05:46.9197669Z               "line": 322
2026-06-23T10:05:46.9197755Z             },
2026-06-23T10:05:46.9197840Z             {
2026-06-23T10:05:46.9197960Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-23T10:05:46.9198045Z               "line": 360
2026-06-23T10:05:46.9198130Z             },
2026-06-23T10:05:46.9198213Z             {
2026-06-23T10:05:46.9198336Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:46.9198417Z               "line": 688
2026-06-23T10:05:46.9198503Z             },
2026-06-23T10:05:46.9198590Z             {
2026-06-23T10:05:46.9198707Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T10:05:46.9198793Z               "line": 397
2026-06-23T10:05:46.9198879Z             },
2026-06-23T10:05:46.9199043Z             {
2026-06-23T10:05:46.9199157Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T10:05:46.9199244Z               "line": 440
2026-06-23T10:05:46.9199329Z             }
2026-06-23T10:05:46.9199410Z           ]
2026-06-23T10:05:46.9199496Z         }
2026-06-23T10:05:46.9199578Z       }
2026-06-23T10:05:46.9199663Z     },
2026-06-23T10:05:46.9199748Z     {
2026-06-23T10:05:46.9199840Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-23T10:05:46.9200058Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-23T10:05:46.9200254Z       "requiredStages": [
2026-06-23T10:05:46.9200340Z         "impl",
2026-06-23T10:05:46.9200426Z         "unit"
2026-06-23T10:05:46.9200508Z       ],
2026-06-23T10:05:46.9200602Z       "stages": {
2026-06-23T10:05:46.9200688Z         "doc": {
2026-06-23T10:05:46.9200780Z           "complete": false,
2026-06-23T10:05:46.9200861Z           "evidence": []
2026-06-23T10:05:46.9200950Z         },
2026-06-23T10:05:46.9201031Z         "impl": {
2026-06-23T10:05:46.9201133Z           "complete": true,
2026-06-23T10:05:46.9201218Z           "evidence": [
2026-06-23T10:05:46.9201395Z             {
2026-06-23T10:05:46.9201523Z               "path": "crates/spt-term/src/reader.rs",
2026-06-23T10:05:46.9201602Z               "line": 169
2026-06-23T10:05:46.9201688Z             }
2026-06-23T10:05:46.9201774Z           ]
2026-06-23T10:05:46.9201854Z         },
2026-06-23T10:05:46.9201943Z         "int": {
2026-06-23T10:05:46.9202034Z           "complete": true,
2026-06-23T10:05:46.9202121Z           "evidence": [
2026-06-23T10:05:46.9202211Z             {
2026-06-23T10:05:46.9202320Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-23T10:05:46.9202407Z               "line": 44
2026-06-23T10:05:46.9202492Z             },
2026-06-23T10:05:46.9202572Z             {
2026-06-23T10:05:46.9202678Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-23T10:05:46.9202765Z               "line": 66
2026-06-23T10:05:46.9202846Z             }
2026-06-23T10:05:46.9202930Z           ]
2026-06-23T10:05:46.9203017Z         },
2026-06-23T10:05:46.9203098Z         "unit": {
2026-06-23T10:05:46.9203193Z           "complete": true,
2026-06-23T10:05:46.9203274Z           "evidence": [
2026-06-23T10:05:46.9203361Z             {
2026-06-23T10:05:46.9203474Z               "path": "crates/spt-term/src/reader.rs",
2026-06-23T10:05:46.9203560Z               "line": 186
2026-06-23T10:05:46.9203642Z             },
2026-06-23T10:05:46.9203728Z             {
2026-06-23T10:05:46.9203846Z               "path": "crates/spt-term/src/reader.rs",
2026-06-23T10:05:46.9203932Z               "line": 238
2026-06-23T10:05:46.9204019Z             },
2026-06-23T10:05:46.9204103Z             {
2026-06-23T10:05:46.9204217Z               "path": "crates/spt-term/src/reader.rs",
2026-06-23T10:05:46.9204293Z               "line": 266
2026-06-23T10:05:46.9204379Z             }
2026-06-23T10:05:46.9204467Z           ]
2026-06-23T10:05:46.9204552Z         }
2026-06-23T10:05:46.9204639Z       }
2026-06-23T10:05:46.9204721Z     },
2026-06-23T10:05:46.9204806Z     {
2026-06-23T10:05:46.9204930Z       "id": "REQ-HAZARD-CONTROLLER-GAP-RESUME",
2026-06-23T10:05:46.9211325Z       "title": "A serving CONTROLLER whose serve-brain hits a b4 drop-don't-block FORWARD output gap must RESUME-FROM-FLOOR (re-subscribe from delivered_through and re-fetch the dropped frames from the ring), NOT snap-above and NOT fatal. ROOT (v0.13.0 forkpty re-run, post-keystone): b4 made the controller a non-blocking try_send that DROPS frames when its bounded channel fills (a controller that falls behind its OWN echo under a hard flood), so the next read is a forward gap the strict reject-gap (brain.rs:624/628, B2 exactly-once) FATALS — wedged_viewer_does_not_stall_controller (attach.rs:1048) drove ctrl.read_event() raw and fataled on `output gap got 6134 want 4643`. Pre-b4 the inline sleep-poll BLOCKED the drain to the controller's rate (no drops, no gaps); this is a b4 SIDE-EFFECT, not a new class. A controller CANNOT snap (it is authoritative — advances delivered_through; skipping rolled frames = not-exactly-once = B2 violation), so REQ-HAZARD-VIEWER-RING-ROLL-SNAP does NOT apply. B2 INVARIANT (doyle, broker.rs:327-330): the ring trim is delivered_through-BLIND (`while ring.len() > cap_chunks { pop_front() }`), so re-fetch is exactly-once IFF tail - delivered_through <= cap_chunks (4096) — NOT guaranteed in general, but the common case (burst < ring; wedged_viewer ~1492 < 4096) holds. FIX: serve_attach catches the output-gap on the controller path (does not ?-propagate) and re-subscribes from Brain::controller_resume_floor (= delivered_through = the gap's `want`; NO mid-stream KIND_SESSIONS round-trip — sessions() loops on read_event and would re-fatal on the same gap + discard Output); the broker replays the dropped frames. The IRRECOVERABLE edge (floor unchanged across two resumes = ring rolled past delivered_through = frames gone) surfaces a MARKED truncation to the operator (never silent-skip = B2 lie, never spin) and ends cleanly — full graceful handling deferred to REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND. Do NOT make the ring trim delivered_through-aware (that risks an unbounded ring under a stuck controller; the 5s eviction + 4096 ring is the practical bound). (v0.13.0)",
2026-06-23T10:05:46.9211655Z       "requiredStages": [
2026-06-23T10:05:46.9211740Z         "impl",
2026-06-23T10:05:46.9211824Z         "unit",
2026-06-23T10:05:46.9211916Z         "int"
2026-06-23T10:05:46.9211993Z       ],
2026-06-23T10:05:46.9212079Z       "stages": {
2026-06-23T10:05:46.9212182Z         "doc": {
2026-06-23T10:05:46.9212282Z           "complete": false,
2026-06-23T10:05:46.9212377Z           "evidence": []
2026-06-23T10:05:46.9212461Z         },
2026-06-23T10:05:46.9212546Z         "impl": {
2026-06-23T10:05:46.9212637Z           "complete": true,
2026-06-23T10:05:46.9212728Z           "evidence": [
2026-06-23T10:05:46.9212813Z             {
2026-06-23T10:05:46.9212933Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T10:05:46.9213029Z               "line": 109
2026-06-23T10:05:46.9213114Z             },
2026-06-23T10:05:46.9213199Z             {
2026-06-23T10:05:46.9213325Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T10:05:46.9213411Z               "line": 156
2026-06-23T10:05:46.9213495Z             },
2026-06-23T10:05:46.9213567Z             {
2026-06-23T10:05:46.9213682Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T10:05:46.9213767Z               "line": 261
2026-06-23T10:05:46.9213848Z             },
2026-06-23T10:05:46.9213935Z             {
2026-06-23T10:05:46.9214053Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9214144Z               "line": 954
2026-06-23T10:05:46.9214221Z             }
2026-06-23T10:05:46.9214307Z           ]
2026-06-23T10:05:46.9214391Z         },
2026-06-23T10:05:46.9214478Z         "int": {
2026-06-23T10:05:46.9214565Z           "complete": true,
2026-06-23T10:05:46.9214654Z           "evidence": [
2026-06-23T10:05:46.9214744Z             {
2026-06-23T10:05:46.9214863Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T10:05:46.9214962Z               "line": 1057
2026-06-23T10:05:46.9215051Z             }
2026-06-23T10:05:46.9215127Z           ]
2026-06-23T10:05:46.9215199Z         },
2026-06-23T10:05:46.9215286Z         "unit": {
2026-06-23T10:05:46.9215385Z           "complete": true,
2026-06-23T10:05:46.9215471Z           "evidence": [
2026-06-23T10:05:46.9215553Z             {
2026-06-23T10:05:46.9215662Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9215761Z               "line": 1526
2026-06-23T10:05:46.9215834Z             }
2026-06-23T10:05:46.9215919Z           ]
2026-06-23T10:05:46.9216000Z         }
2026-06-23T10:05:46.9216090Z       }
2026-06-23T10:05:46.9216168Z     },
2026-06-23T10:05:46.9216243Z     {
2026-06-23T10:05:46.9216391Z       "id": "REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND",
2026-06-23T10:05:46.9219204Z       "title": "DEFERRED EDGE of REQ-HAZARD-CONTROLLER-GAP-RESUME: when a serving controller falls behind the live ring FURTHER than the ring holds (tail - delivered_through > cap_chunks, the ring trim being delivered_through-blind, broker.rs:327-330), the dropped frames have rolled OUT of the ring and an exactly-once re-fetch is IMPOSSIBLE. v0.13.0 DETECTS this (resume floor unchanged across two consecutive resumes) and surfaces a MARKED truncation notice to the operator then ends the attach cleanly — it never silent-skips (a B2 lie) and never spins. FULL graceful handling (a clearly-marked snap-with-data-loss that keeps the operator on the live tail, or a structured truncation record the rc renders distinctly, plus the controller-too-slow + ring-too-small backpressure/sizing policy) is DEFERRED — staging it needs a netsplit / deep-behind harness (the in-process loopback rig keeps up; wedged_viewer's gap is recoverable at ~1492 < 4096). (v0.13.0+)",
2026-06-23T10:05:46.9219438Z       "requiredStages": [],
2026-06-23T10:05:46.9219522Z       "stages": {
2026-06-23T10:05:46.9219604Z         "doc": {
2026-06-23T10:05:46.9219710Z           "complete": false,
2026-06-23T10:05:46.9219894Z           "evidence": []
2026-06-23T10:05:46.9219975Z         },
2026-06-23T10:05:46.9220065Z         "impl": {
2026-06-23T10:05:46.9220144Z           "complete": false,
2026-06-23T10:05:46.9220244Z           "evidence": []
2026-06-23T10:05:46.9220331Z         },
2026-06-23T10:05:46.9220407Z         "int": {
2026-06-23T10:05:46.9220497Z           "complete": false,
2026-06-23T10:05:46.9220588Z           "evidence": []
2026-06-23T10:05:46.9220664Z         },
2026-06-23T10:05:46.9220750Z         "unit": {
2026-06-23T10:05:46.9220845Z           "complete": false,
2026-06-23T10:05:46.9220921Z           "evidence": []
2026-06-23T10:05:46.9221003Z         }
2026-06-23T10:05:46.9221093Z       }
2026-06-23T10:05:46.9221178Z     },
2026-06-23T10:05:46.9221256Z     {
2026-06-23T10:05:46.9221375Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-23T10:05:46.9225532Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-23T10:05:46.9225649Z       "requiredStages": [],
2026-06-23T10:05:46.9225736Z       "stages": {
2026-06-23T10:05:46.9225831Z         "doc": {
2026-06-23T10:05:46.9225921Z           "complete": false,
2026-06-23T10:05:46.9226016Z           "evidence": []
2026-06-23T10:05:46.9226104Z         },
2026-06-23T10:05:46.9226194Z         "impl": {
2026-06-23T10:05:46.9226278Z           "complete": false,
2026-06-23T10:05:46.9226365Z           "evidence": []
2026-06-23T10:05:46.9226451Z         },
2026-06-23T10:05:46.9226532Z         "int": {
2026-06-23T10:05:46.9226617Z           "complete": false,
2026-06-23T10:05:46.9226695Z           "evidence": []
2026-06-23T10:05:46.9226780Z         },
2026-06-23T10:05:46.9226871Z         "unit": {
2026-06-23T10:05:46.9226966Z           "complete": false,
2026-06-23T10:05:46.9227053Z           "evidence": []
2026-06-23T10:05:46.9227132Z         }
2026-06-23T10:05:46.9227227Z       }
2026-06-23T10:05:46.9227314Z     },
2026-06-23T10:05:46.9227406Z     {
2026-06-23T10:05:46.9227533Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-23T10:05:46.9241005Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-23T10:05:46.9241674Z       "requiredStages": [
2026-06-23T10:05:46.9241770Z         "doc",
2026-06-23T10:05:46.9241851Z         "impl",
2026-06-23T10:05:46.9241936Z         "unit",
2026-06-23T10:05:46.9242027Z         "int"
2026-06-23T10:05:46.9242105Z       ],
2026-06-23T10:05:46.9242204Z       "stages": {
2026-06-23T10:05:46.9242285Z         "doc": {
2026-06-23T10:05:46.9242381Z           "complete": true,
2026-06-23T10:05:46.9242466Z           "evidence": [
2026-06-23T10:05:46.9242547Z             {
2026-06-23T10:05:46.9242661Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9242758Z               "line": 468
2026-06-23T10:05:46.9242838Z             }
2026-06-23T10:05:46.9242919Z           ]
2026-06-23T10:05:46.9243006Z         },
2026-06-23T10:05:46.9243091Z         "impl": {
2026-06-23T10:05:46.9243195Z           "complete": true,
2026-06-23T10:05:46.9243291Z           "evidence": [
2026-06-23T10:05:46.9243383Z             {
2026-06-23T10:05:46.9243505Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9243587Z               "line": 348
2026-06-23T10:05:46.9243679Z             },
2026-06-23T10:05:46.9243754Z             {
2026-06-23T10:05:46.9243872Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9243962Z               "line": 1310
2026-06-23T10:05:46.9244057Z             },
2026-06-23T10:05:46.9244146Z             {
2026-06-23T10:05:46.9244265Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9244346Z               "line": 760
2026-06-23T10:05:46.9244428Z             }
2026-06-23T10:05:46.9244508Z           ]
2026-06-23T10:05:46.9244599Z         },
2026-06-23T10:05:46.9244681Z         "int": {
2026-06-23T10:05:46.9244776Z           "complete": true,
2026-06-23T10:05:46.9244865Z           "evidence": [
2026-06-23T10:05:46.9244948Z             {
2026-06-23T10:05:46.9245076Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T10:05:46.9245176Z               "line": 1212
2026-06-23T10:05:46.9245262Z             },
2026-06-23T10:05:46.9245343Z             {
2026-06-23T10:05:46.9245462Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T10:05:46.9245558Z               "line": 1313
2026-06-23T10:05:46.9245644Z             },
2026-06-23T10:05:46.9245734Z             {
2026-06-23T10:05:46.9245868Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-23T10:05:46.9245959Z               "line": 1177
2026-06-23T10:05:46.9246039Z             }
2026-06-23T10:05:46.9246125Z           ]
2026-06-23T10:05:46.9246221Z         },
2026-06-23T10:05:46.9246307Z         "unit": {
2026-06-23T10:05:46.9246396Z           "complete": true,
2026-06-23T10:05:46.9246481Z           "evidence": [
2026-06-23T10:05:46.9246558Z             {
2026-06-23T10:05:46.9246671Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9246755Z               "line": 3067
2026-06-23T10:05:46.9246846Z             }
2026-06-23T10:05:46.9246928Z           ]
2026-06-23T10:05:46.9247014Z         }
2026-06-23T10:05:46.9247098Z       }
2026-06-23T10:05:46.9247185Z     },
2026-06-23T10:05:46.9247281Z     {
2026-06-23T10:05:46.9247399Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-23T10:05:46.9247805Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-23T10:05:46.9247996Z       "requiredStages": [
2026-06-23T10:05:46.9248076Z         "impl",
2026-06-23T10:05:46.9248158Z         "unit",
2026-06-23T10:05:46.9248244Z         "int"
2026-06-23T10:05:46.9248344Z       ],
2026-06-23T10:05:46.9248449Z       "stages": {
2026-06-23T10:05:46.9248563Z         "doc": {
2026-06-23T10:05:46.9248659Z           "complete": false,
2026-06-23T10:05:46.9248744Z           "evidence": []
2026-06-23T10:05:46.9248831Z         },
2026-06-23T10:05:46.9248920Z         "impl": {
2026-06-23T10:05:46.9249198Z           "complete": true,
2026-06-23T10:05:46.9249277Z           "evidence": [
2026-06-23T10:05:46.9249363Z             {
2026-06-23T10:05:46.9249497Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.9249583Z               "line": 370
2026-06-23T10:05:46.9249677Z             },
2026-06-23T10:05:46.9249754Z             {
2026-06-23T10:05:46.9249884Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.9249963Z               "line": 424
2026-06-23T10:05:46.9250055Z             },
2026-06-23T10:05:46.9250141Z             {
2026-06-23T10:05:46.9250240Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T10:05:46.9250331Z               "line": 79
2026-06-23T10:05:46.9250413Z             },
2026-06-23T10:05:46.9250498Z             {
2026-06-23T10:05:46.9250607Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T10:05:46.9250699Z               "line": 52
2026-06-23T10:05:46.9250770Z             },
2026-06-23T10:05:46.9250855Z             {
2026-06-23T10:05:46.9250965Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:46.9251061Z               "line": 263
2026-06-23T10:05:46.9251141Z             },
2026-06-23T10:05:46.9251227Z             {
2026-06-23T10:05:46.9251357Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T10:05:46.9251452Z               "line": 27
2026-06-23T10:05:46.9251536Z             },
2026-06-23T10:05:46.9251626Z             {
2026-06-23T10:05:46.9251746Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T10:05:46.9251834Z               "line": 94
2026-06-23T10:05:46.9251924Z             },
2026-06-23T10:05:46.9252011Z             {
2026-06-23T10:05:46.9252130Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T10:05:46.9252206Z               "line": 117
2026-06-23T10:05:46.9252297Z             },
2026-06-23T10:05:46.9252378Z             {
2026-06-23T10:05:46.9252501Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T10:05:46.9252587Z               "line": 116
2026-06-23T10:05:46.9252684Z             }
2026-06-23T10:05:46.9252769Z           ]
2026-06-23T10:05:46.9252845Z         },
2026-06-23T10:05:46.9252927Z         "int": {
2026-06-23T10:05:46.9253017Z           "complete": true,
2026-06-23T10:05:46.9253112Z           "evidence": [
2026-06-23T10:05:46.9253193Z             {
2026-06-23T10:05:46.9253369Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-23T10:05:46.9253474Z               "line": 43
2026-06-23T10:05:46.9253561Z             }
2026-06-23T10:05:46.9253647Z           ]
2026-06-23T10:05:46.9253731Z         },
2026-06-23T10:05:46.9253822Z         "unit": {
2026-06-23T10:05:46.9253914Z           "complete": true,
2026-06-23T10:05:46.9254013Z           "evidence": [
2026-06-23T10:05:46.9254104Z             {
2026-06-23T10:05:46.9254224Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.9254319Z               "line": 889
2026-06-23T10:05:46.9254408Z             },
2026-06-23T10:05:46.9254493Z             {
2026-06-23T10:05:46.9254604Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:46.9254701Z               "line": 495
2026-06-23T10:05:46.9254782Z             },
2026-06-23T10:05:46.9254868Z             {
2026-06-23T10:05:46.9254983Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T10:05:46.9255193Z               "line": 142
2026-06-23T10:05:46.9255279Z             },
2026-06-23T10:05:46.9255364Z             {
2026-06-23T10:05:46.9255479Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T10:05:46.9255570Z               "line": 161
2026-06-23T10:05:46.9255655Z             },
2026-06-23T10:05:46.9255741Z             {
2026-06-23T10:05:46.9255861Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T10:05:46.9255951Z               "line": 178
2026-06-23T10:05:46.9256041Z             },
2026-06-23T10:05:46.9256127Z             {
2026-06-23T10:05:46.9256246Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T10:05:46.9256418Z               "line": 205
2026-06-23T10:05:46.9256514Z             },
2026-06-23T10:05:46.9256599Z             {
2026-06-23T10:05:46.9256713Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T10:05:46.9256815Z               "line": 285
2026-06-23T10:05:46.9256895Z             },
2026-06-23T10:05:46.9256984Z             {
2026-06-23T10:05:46.9257098Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T10:05:46.9257198Z               "line": 229
2026-06-23T10:05:46.9257278Z             }
2026-06-23T10:05:46.9257377Z           ]
2026-06-23T10:05:46.9257459Z         }
2026-06-23T10:05:46.9257536Z       }
2026-06-23T10:05:46.9257626Z     },
2026-06-23T10:05:46.9257707Z     {
2026-06-23T10:05:46.9257836Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-23T10:05:46.9258456Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-23T10:05:46.9258565Z       "requiredStages": [
2026-06-23T10:05:46.9258651Z         "impl",
2026-06-23T10:05:46.9258733Z         "unit"
2026-06-23T10:05:46.9258818Z       ],
2026-06-23T10:05:46.9258899Z       "stages": {
2026-06-23T10:05:46.9259066Z         "doc": {
2026-06-23T10:05:46.9259170Z           "complete": false,
2026-06-23T10:05:46.9259266Z           "evidence": []
2026-06-23T10:05:46.9259348Z         },
2026-06-23T10:05:46.9259433Z         "impl": {
2026-06-23T10:05:46.9259533Z           "complete": true,
2026-06-23T10:05:46.9259620Z           "evidence": [
2026-06-23T10:05:46.9259710Z             {
2026-06-23T10:05:46.9259833Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9259932Z               "line": 1315
2026-06-23T10:05:46.9260023Z             },
2026-06-23T10:05:46.9260105Z             {
2026-06-23T10:05:46.9260213Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9260310Z               "line": 1577
2026-06-23T10:05:46.9260400Z             }
2026-06-23T10:05:46.9260481Z           ]
2026-06-23T10:05:46.9260561Z         },
2026-06-23T10:05:46.9260648Z         "int": {
2026-06-23T10:05:46.9260738Z           "complete": false,
2026-06-23T10:05:46.9260843Z           "evidence": []
2026-06-23T10:05:46.9260929Z         },
2026-06-23T10:05:46.9261020Z         "unit": {
2026-06-23T10:05:46.9261101Z           "complete": true,
2026-06-23T10:05:46.9261191Z           "evidence": [
2026-06-23T10:05:46.9261283Z             {
2026-06-23T10:05:46.9261405Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-23T10:05:46.9261501Z               "line": 161
2026-06-23T10:05:46.9261579Z             }
2026-06-23T10:05:46.9261669Z           ]
2026-06-23T10:05:46.9261744Z         }
2026-06-23T10:05:46.9261825Z       }
2026-06-23T10:05:46.9261912Z     },
2026-06-23T10:05:46.9261993Z     {
2026-06-23T10:05:46.9262125Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-23T10:05:46.9263835Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-23T10:05:46.9264039Z       "requiredStages": [
2026-06-23T10:05:46.9264126Z         "impl",
2026-06-23T10:05:46.9264217Z         "unit"
2026-06-23T10:05:46.9264296Z       ],
2026-06-23T10:05:46.9264378Z       "stages": {
2026-06-23T10:05:46.9264460Z         "doc": {
2026-06-23T10:05:46.9264550Z           "complete": false,
2026-06-23T10:05:46.9264736Z           "evidence": []
2026-06-23T10:05:46.9264823Z         },
2026-06-23T10:05:46.9264902Z         "impl": {
2026-06-23T10:05:46.9264987Z           "complete": true,
2026-06-23T10:05:46.9265083Z           "evidence": [
2026-06-23T10:05:46.9265169Z             {
2026-06-23T10:05:46.9265295Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T10:05:46.9265395Z               "line": 257
2026-06-23T10:05:46.9265477Z             }
2026-06-23T10:05:46.9265558Z           ]
2026-06-23T10:05:46.9265643Z         },
2026-06-23T10:05:46.9265724Z         "int": {
2026-06-23T10:05:46.9265815Z           "complete": false,
2026-06-23T10:05:46.9265910Z           "evidence": []
2026-06-23T10:05:46.9265991Z         },
2026-06-23T10:05:46.9266083Z         "unit": {
2026-06-23T10:05:46.9266172Z           "complete": true,
2026-06-23T10:05:46.9266272Z           "evidence": [
2026-06-23T10:05:46.9266354Z             {
2026-06-23T10:05:46.9266473Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T10:05:46.9266568Z               "line": 360
2026-06-23T10:05:46.9266653Z             }
2026-06-23T10:05:46.9266736Z           ]
2026-06-23T10:05:46.9266816Z         }
2026-06-23T10:05:46.9266897Z       }
2026-06-23T10:05:46.9266978Z     },
2026-06-23T10:05:46.9267070Z     {
2026-06-23T10:05:46.9267183Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-23T10:05:46.9269035Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-23T10:05:46.9269153Z       "requiredStages": [
2026-06-23T10:05:46.9269240Z         "impl",
2026-06-23T10:05:46.9269321Z         "unit"
2026-06-23T10:05:46.9269407Z       ],
2026-06-23T10:05:46.9269492Z       "stages": {
2026-06-23T10:05:46.9269584Z         "doc": {
2026-06-23T10:05:46.9269678Z           "complete": false,
2026-06-23T10:05:46.9269764Z           "evidence": []
2026-06-23T10:05:46.9269855Z         },
2026-06-23T10:05:46.9269942Z         "impl": {
2026-06-23T10:05:46.9270031Z           "complete": true,
2026-06-23T10:05:46.9270117Z           "evidence": [
2026-06-23T10:05:46.9270199Z             {
2026-06-23T10:05:46.9270327Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9270426Z               "line": 1018
2026-06-23T10:05:46.9270516Z             },
2026-06-23T10:05:46.9270603Z             {
2026-06-23T10:05:46.9270717Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9270807Z               "line": 283
2026-06-23T10:05:46.9270898Z             },
2026-06-23T10:05:46.9270984Z             {
2026-06-23T10:05:46.9271102Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9271195Z               "line": 316
2026-06-23T10:05:46.9271285Z             },
2026-06-23T10:05:46.9271370Z             {
2026-06-23T10:05:46.9271489Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-23T10:05:46.9271676Z               "line": 26
2026-06-23T10:05:46.9271765Z             }
2026-06-23T10:05:46.9271857Z           ]
2026-06-23T10:05:46.9271947Z         },
2026-06-23T10:05:46.9272033Z         "int": {
2026-06-23T10:05:46.9272119Z           "complete": false,
2026-06-23T10:05:46.9272205Z           "evidence": []
2026-06-23T10:05:46.9272299Z         },
2026-06-23T10:05:46.9272390Z         "unit": {
2026-06-23T10:05:46.9272482Z           "complete": true,
2026-06-23T10:05:46.9272581Z           "evidence": [
2026-06-23T10:05:46.9272651Z             {
2026-06-23T10:05:46.9272771Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-23T10:05:46.9272950Z               "line": 271
2026-06-23T10:05:46.9273040Z             },
2026-06-23T10:05:46.9273112Z             {
2026-06-23T10:05:46.9273228Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-23T10:05:46.9273316Z               "line": 348
2026-06-23T10:05:46.9273398Z             }
2026-06-23T10:05:46.9273494Z           ]
2026-06-23T10:05:46.9273570Z         }
2026-06-23T10:05:46.9273655Z       }
2026-06-23T10:05:46.9273742Z     },
2026-06-23T10:05:46.9273823Z     {
2026-06-23T10:05:46.9273941Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-23T10:05:46.9274119Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-23T10:05:46.9274219Z       "requiredStages": [
2026-06-23T10:05:46.9274303Z         "impl",
2026-06-23T10:05:46.9274391Z         "unit"
2026-06-23T10:05:46.9274476Z       ],
2026-06-23T10:05:46.9274557Z       "stages": {
2026-06-23T10:05:46.9274647Z         "doc": {
2026-06-23T10:05:46.9274729Z           "complete": false,
2026-06-23T10:05:46.9274833Z           "evidence": []
2026-06-23T10:05:46.9274914Z         },
2026-06-23T10:05:46.9275006Z         "impl": {
2026-06-23T10:05:46.9275092Z           "complete": true,
2026-06-23T10:05:46.9275180Z           "evidence": [
2026-06-23T10:05:46.9275262Z             {
2026-06-23T10:05:46.9275373Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:46.9275477Z               "line": 40
2026-06-23T10:05:46.9275552Z             },
2026-06-23T10:05:46.9275638Z             {
2026-06-23T10:05:46.9275752Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:46.9275845Z               "line": 103
2026-06-23T10:05:46.9275931Z             },
2026-06-23T10:05:46.9276003Z             {
2026-06-23T10:05:46.9276114Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:46.9276198Z               "line": 218
2026-06-23T10:05:46.9276284Z             },
2026-06-23T10:05:46.9276371Z             {
2026-06-23T10:05:46.9276489Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:46.9276584Z               "line": 323
2026-06-23T10:05:46.9276676Z             }
2026-06-23T10:05:46.9276767Z           ]
2026-06-23T10:05:46.9276856Z         },
2026-06-23T10:05:46.9276947Z         "int": {
2026-06-23T10:05:46.9277051Z           "complete": false,
2026-06-23T10:05:46.9277142Z           "evidence": []
2026-06-23T10:05:46.9277238Z         },
2026-06-23T10:05:46.9277329Z         "unit": {
2026-06-23T10:05:46.9277423Z           "complete": true,
2026-06-23T10:05:46.9277500Z           "evidence": [
2026-06-23T10:05:46.9277587Z             {
2026-06-23T10:05:46.9277686Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:46.9277786Z               "line": 361
2026-06-23T10:05:46.9277878Z             },
2026-06-23T10:05:46.9277959Z             {
2026-06-23T10:05:46.9278076Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:46.9278166Z               "line": 433
2026-06-23T10:05:46.9278267Z             },
2026-06-23T10:05:46.9278346Z             {
2026-06-23T10:05:46.9278460Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:46.9278545Z               "line": 496
2026-06-23T10:05:46.9278632Z             },
2026-06-23T10:05:46.9278717Z             {
2026-06-23T10:05:46.9278832Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:46.9279084Z               "line": 517
2026-06-23T10:05:46.9279166Z             }
2026-06-23T10:05:46.9279252Z           ]
2026-06-23T10:05:46.9279347Z         }
2026-06-23T10:05:46.9279423Z       }
2026-06-23T10:05:46.9279510Z     },
2026-06-23T10:05:46.9279590Z     {
2026-06-23T10:05:46.9279704Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-23T10:05:46.9281954Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-23T10:05:46.9282183Z       "requiredStages": [
2026-06-23T10:05:46.9282273Z         "impl",
2026-06-23T10:05:46.9282369Z         "unit"
2026-06-23T10:05:46.9282460Z       ],
2026-06-23T10:05:46.9282550Z       "stages": {
2026-06-23T10:05:46.9282630Z         "doc": {
2026-06-23T10:05:46.9285451Z           "complete": false,
2026-06-23T10:05:46.9285566Z           "evidence": []
2026-06-23T10:05:46.9285661Z         },
2026-06-23T10:05:46.9285755Z         "impl": {
2026-06-23T10:05:46.9285871Z           "complete": true,
2026-06-23T10:05:46.9285962Z           "evidence": [
2026-06-23T10:05:46.9286046Z             {
2026-06-23T10:05:46.9286183Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:46.9286274Z               "line": 402
2026-06-23T10:05:46.9286368Z             },
2026-06-23T10:05:46.9286453Z             {
2026-06-23T10:05:46.9286587Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:46.9286683Z               "line": 446
2026-06-23T10:05:46.9286763Z             }
2026-06-23T10:05:46.9286844Z           ]
2026-06-23T10:05:46.9286926Z         },
2026-06-23T10:05:46.9287012Z         "int": {
2026-06-23T10:05:46.9287106Z           "complete": false,
2026-06-23T10:05:46.9287198Z           "evidence": []
2026-06-23T10:05:46.9287283Z         },
2026-06-23T10:05:46.9287369Z         "unit": {
2026-06-23T10:05:46.9287454Z           "complete": true,
2026-06-23T10:05:46.9287546Z           "evidence": [
2026-06-23T10:05:46.9287631Z             {
2026-06-23T10:05:46.9287765Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:46.9287851Z               "line": 910
2026-06-23T10:05:46.9287936Z             }
2026-06-23T10:05:46.9288017Z           ]
2026-06-23T10:05:46.9288103Z         }
2026-06-23T10:05:46.9288185Z       }
2026-06-23T10:05:46.9288274Z     },
2026-06-23T10:05:46.9288356Z     {
2026-06-23T10:05:46.9288481Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-23T10:05:46.9288612Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-23T10:05:46.9288698Z       "requiredStages": [
2026-06-23T10:05:46.9288784Z         "impl",
2026-06-23T10:05:46.9288869Z         "unit"
2026-06-23T10:05:46.9289034Z       ],
2026-06-23T10:05:46.9289125Z       "stages": {
2026-06-23T10:05:46.9289207Z         "doc": {
2026-06-23T10:05:46.9289301Z           "complete": false,
2026-06-23T10:05:46.9289382Z           "evidence": []
2026-06-23T10:05:46.9289469Z         },
2026-06-23T10:05:46.9289550Z         "impl": {
2026-06-23T10:05:46.9289649Z           "complete": true,
2026-06-23T10:05:46.9289736Z           "evidence": [
2026-06-23T10:05:46.9289817Z             {
2026-06-23T10:05:46.9289930Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:46.9290016Z               "line": 116
2026-06-23T10:05:46.9290094Z             },
2026-06-23T10:05:46.9290174Z             {
2026-06-23T10:05:46.9290414Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:46.9290512Z               "line": 211
2026-06-23T10:05:46.9290593Z             }
2026-06-23T10:05:46.9290680Z           ]
2026-06-23T10:05:46.9290757Z         },
2026-06-23T10:05:46.9290846Z         "int": {
2026-06-23T10:05:46.9290947Z           "complete": false,
2026-06-23T10:05:46.9291028Z           "evidence": []
2026-06-23T10:05:46.9291118Z         },
2026-06-23T10:05:46.9291204Z         "unit": {
2026-06-23T10:05:46.9291300Z           "complete": true,
2026-06-23T10:05:46.9291377Z           "evidence": [
2026-06-23T10:05:46.9291561Z             {
2026-06-23T10:05:46.9291675Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:46.9291757Z               "line": 388
2026-06-23T10:05:46.9291842Z             },
2026-06-23T10:05:46.9291927Z             {
2026-06-23T10:05:46.9292033Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:46.9292114Z               "line": 469
2026-06-23T10:05:46.9292214Z             }
2026-06-23T10:05:46.9292295Z           ]
2026-06-23T10:05:46.9292381Z         }
2026-06-23T10:05:46.9292462Z       }
2026-06-23T10:05:46.9292547Z     },
2026-06-23T10:05:46.9292629Z     {
2026-06-23T10:05:46.9292748Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-23T10:05:46.9293848Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-23T10:05:46.9293967Z       "requiredStages": [
2026-06-23T10:05:46.9294056Z         "impl",
2026-06-23T10:05:46.9294146Z         "unit"
2026-06-23T10:05:46.9294227Z       ],
2026-06-23T10:05:46.9294319Z       "stages": {
2026-06-23T10:05:46.9294394Z         "doc": {
2026-06-23T10:05:46.9294489Z           "complete": true,
2026-06-23T10:05:46.9294585Z           "evidence": [
2026-06-23T10:05:46.9294666Z             {
2026-06-23T10:05:46.9294775Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9294857Z               "line": 206
2026-06-23T10:05:46.9294943Z             }
2026-06-23T10:05:46.9295028Z           ]
2026-06-23T10:05:46.9295113Z         },
2026-06-23T10:05:46.9295196Z         "impl": {
2026-06-23T10:05:46.9295286Z           "complete": true,
2026-06-23T10:05:46.9295372Z           "evidence": [
2026-06-23T10:05:46.9295453Z             {
2026-06-23T10:05:46.9295582Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9295663Z               "line": 691
2026-06-23T10:05:46.9295748Z             },
2026-06-23T10:05:46.9295836Z             {
2026-06-23T10:05:46.9295954Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9296049Z               "line": 791
2026-06-23T10:05:46.9296131Z             },
2026-06-23T10:05:46.9296217Z             {
2026-06-23T10:05:46.9296325Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9296417Z               "line": 1120
2026-06-23T10:05:46.9296489Z             },
2026-06-23T10:05:46.9296564Z             {
2026-06-23T10:05:46.9296682Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:46.9296768Z               "line": 184
2026-06-23T10:05:46.9296853Z             }
2026-06-23T10:05:46.9296937Z           ]
2026-06-23T10:05:46.9297022Z         },
2026-06-23T10:05:46.9297109Z         "int": {
2026-06-23T10:05:46.9297195Z           "complete": false,
2026-06-23T10:05:46.9297285Z           "evidence": []
2026-06-23T10:05:46.9297371Z         },
2026-06-23T10:05:46.9297458Z         "unit": {
2026-06-23T10:05:46.9297553Z           "complete": true,
2026-06-23T10:05:46.9297628Z           "evidence": [
2026-06-23T10:05:46.9297714Z             {
2026-06-23T10:05:46.9297834Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9297924Z               "line": 1169
2026-06-23T10:05:46.9298077Z             },
2026-06-23T10:05:46.9298163Z             {
2026-06-23T10:05:46.9298286Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-23T10:05:46.9298373Z               "line": 44
2026-06-23T10:05:46.9298459Z             },
2026-06-23T10:05:46.9298543Z             {
2026-06-23T10:05:46.9298673Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-23T10:05:46.9298755Z               "line": 52
2026-06-23T10:05:46.9298835Z             },
2026-06-23T10:05:46.9298920Z             {
2026-06-23T10:05:46.9299122Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-23T10:05:46.9299320Z               "line": 57
2026-06-23T10:05:46.9299396Z             },
2026-06-23T10:05:46.9299481Z             {
2026-06-23T10:05:46.9299608Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-23T10:05:46.9299695Z               "line": 54
2026-06-23T10:05:46.9299777Z             }
2026-06-23T10:05:46.9299861Z           ]
2026-06-23T10:05:46.9299952Z         }
2026-06-23T10:05:46.9300034Z       }
2026-06-23T10:05:46.9300120Z     },
2026-06-23T10:05:46.9300195Z     {
2026-06-23T10:05:46.9300320Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-23T10:05:46.9300538Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-23T10:05:46.9300635Z       "requiredStages": [
2026-06-23T10:05:46.9300725Z         "impl",
2026-06-23T10:05:46.9300801Z         "unit"
2026-06-23T10:05:46.9300891Z       ],
2026-06-23T10:05:46.9300969Z       "stages": {
2026-06-23T10:05:46.9301053Z         "doc": {
2026-06-23T10:05:46.9301158Z           "complete": false,
2026-06-23T10:05:46.9301245Z           "evidence": []
2026-06-23T10:05:46.9301331Z         },
2026-06-23T10:05:46.9301415Z         "impl": {
2026-06-23T10:05:46.9301502Z           "complete": true,
2026-06-23T10:05:46.9301593Z           "evidence": [
2026-06-23T10:05:46.9301679Z             {
2026-06-23T10:05:46.9301802Z               "path": "crates/spt-live/src/context.rs",
2026-06-23T10:05:46.9301894Z               "line": 26
2026-06-23T10:05:46.9301984Z             },
2026-06-23T10:05:46.9302063Z             {
2026-06-23T10:05:46.9302172Z               "path": "crates/spt-live/src/context.rs",
2026-06-23T10:05:46.9302254Z               "line": 135
2026-06-23T10:05:46.9302341Z             },
2026-06-23T10:05:46.9302425Z             {
2026-06-23T10:05:46.9302550Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-23T10:05:46.9302641Z               "line": 26
2026-06-23T10:05:46.9302730Z             },
2026-06-23T10:05:46.9302816Z             {
2026-06-23T10:05:46.9302941Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-23T10:05:46.9303027Z               "line": 237
2026-06-23T10:05:46.9303112Z             }
2026-06-23T10:05:46.9303189Z           ]
2026-06-23T10:05:46.9303270Z         },
2026-06-23T10:05:46.9303356Z         "int": {
2026-06-23T10:05:46.9303436Z           "complete": false,
2026-06-23T10:05:46.9303524Z           "evidence": []
2026-06-23T10:05:46.9303613Z         },
2026-06-23T10:05:46.9303703Z         "unit": {
2026-06-23T10:05:46.9303790Z           "complete": true,
2026-06-23T10:05:46.9303876Z           "evidence": [
2026-06-23T10:05:46.9303956Z             {
2026-06-23T10:05:46.9304066Z               "path": "crates/spt-live/src/context.rs",
2026-06-23T10:05:46.9304153Z               "line": 161
2026-06-23T10:05:46.9304233Z             },
2026-06-23T10:05:46.9304328Z             {
2026-06-23T10:05:46.9304432Z               "path": "crates/spt-live/src/context.rs",
2026-06-23T10:05:46.9304518Z               "line": 170
2026-06-23T10:05:46.9304607Z             },
2026-06-23T10:05:46.9304682Z             {
2026-06-23T10:05:46.9304792Z               "path": "crates/spt-live/src/context.rs",
2026-06-23T10:05:46.9304879Z               "line": 179
2026-06-23T10:05:46.9304969Z             },
2026-06-23T10:05:46.9305049Z             {
2026-06-23T10:05:46.9305165Z               "path": "crates/spt-live/src/context.rs",
2026-06-23T10:05:46.9305359Z               "line": 190
2026-06-23T10:05:46.9305442Z             },
2026-06-23T10:05:46.9305527Z             {
2026-06-23T10:05:46.9305650Z               "path": "crates/spt-live/src/context.rs",
2026-06-23T10:05:46.9305737Z               "line": 199
2026-06-23T10:05:46.9305822Z             },
2026-06-23T10:05:46.9305908Z             {
2026-06-23T10:05:46.9306013Z               "path": "crates/spt-live/src/context.rs",
2026-06-23T10:05:46.9306095Z               "line": 216
2026-06-23T10:05:46.9306180Z             },
2026-06-23T10:05:46.9306266Z             {
2026-06-23T10:05:46.9306438Z               "path": "crates/spt-live/src/context.rs",
2026-06-23T10:05:46.9306523Z               "line": 242
2026-06-23T10:05:46.9306609Z             },
2026-06-23T10:05:46.9306696Z             {
2026-06-23T10:05:46.9306809Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T10:05:46.9306905Z               "line": 295
2026-06-23T10:05:46.9306996Z             },
2026-06-23T10:05:46.9307092Z             {
2026-06-23T10:05:46.9307200Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-23T10:05:46.9307285Z               "line": 244
2026-06-23T10:05:46.9307362Z             },
2026-06-23T10:05:46.9307446Z             {
2026-06-23T10:05:46.9307573Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-23T10:05:46.9307664Z               "line": 265
2026-06-23T10:05:46.9307746Z             },
2026-06-23T10:05:46.9307817Z             {
2026-06-23T10:05:46.9307941Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-23T10:05:46.9308022Z               "line": 293
2026-06-23T10:05:46.9308108Z             },
2026-06-23T10:05:46.9308193Z             {
2026-06-23T10:05:46.9308309Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-23T10:05:46.9308399Z               "line": 317
2026-06-23T10:05:46.9308484Z             },
2026-06-23T10:05:46.9308565Z             {
2026-06-23T10:05:46.9308676Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-23T10:05:46.9308770Z               "line": 327
2026-06-23T10:05:46.9308851Z             },
2026-06-23T10:05:46.9309033Z             {
2026-06-23T10:05:46.9309142Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T10:05:46.9309228Z               "line": 540
2026-06-23T10:05:46.9309310Z             }
2026-06-23T10:05:46.9309395Z           ]
2026-06-23T10:05:46.9309472Z         }
2026-06-23T10:05:46.9309553Z       }
2026-06-23T10:05:46.9309639Z     },
2026-06-23T10:05:46.9309724Z     {
2026-06-23T10:05:46.9309851Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-23T10:05:46.9314540Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-23T10:05:46.9314775Z       "requiredStages": [],
2026-06-23T10:05:46.9314869Z       "stages": {
2026-06-23T10:05:46.9314949Z         "doc": {
2026-06-23T10:05:46.9315050Z           "complete": false,
2026-06-23T10:05:46.9315134Z           "evidence": []
2026-06-23T10:05:46.9315214Z         },
2026-06-23T10:05:46.9315299Z         "impl": {
2026-06-23T10:05:46.9315510Z           "complete": false,
2026-06-23T10:05:46.9315600Z           "evidence": []
2026-06-23T10:05:46.9315686Z         },
2026-06-23T10:05:46.9315772Z         "int": {
2026-06-23T10:05:46.9315857Z           "complete": false,
2026-06-23T10:05:46.9315948Z           "evidence": []
2026-06-23T10:05:46.9316035Z         },
2026-06-23T10:05:46.9316111Z         "unit": {
2026-06-23T10:05:46.9316206Z           "complete": false,
2026-06-23T10:05:46.9316292Z           "evidence": []
2026-06-23T10:05:46.9316382Z         }
2026-06-23T10:05:46.9316463Z       }
2026-06-23T10:05:46.9316549Z     },
2026-06-23T10:05:46.9316636Z     {
2026-06-23T10:05:46.9316749Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-23T10:05:46.9318263Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-23T10:05:46.9318368Z       "requiredStages": [
2026-06-23T10:05:46.9318453Z         "impl",
2026-06-23T10:05:46.9318534Z         "unit",
2026-06-23T10:05:46.9318626Z         "int"
2026-06-23T10:05:46.9318711Z       ],
2026-06-23T10:05:46.9318791Z       "stages": {
2026-06-23T10:05:46.9318869Z         "doc": {
2026-06-23T10:05:46.9319044Z           "complete": false,
2026-06-23T10:05:46.9319130Z           "evidence": []
2026-06-23T10:05:46.9319222Z         },
2026-06-23T10:05:46.9319312Z         "impl": {
2026-06-23T10:05:46.9319397Z           "complete": true,
2026-06-23T10:05:46.9319483Z           "evidence": [
2026-06-23T10:05:46.9319569Z             {
2026-06-23T10:05:46.9319698Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9319798Z               "line": 553
2026-06-23T10:05:46.9319875Z             },
2026-06-23T10:05:46.9319960Z             {
2026-06-23T10:05:46.9320079Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:46.9320162Z               "line": 677
2026-06-23T10:05:46.9320242Z             },
2026-06-23T10:05:46.9320326Z             {
2026-06-23T10:05:46.9320474Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-23T10:05:46.9320573Z               "line": 21
2026-06-23T10:05:46.9320657Z             }
2026-06-23T10:05:46.9320738Z           ]
2026-06-23T10:05:46.9320824Z         },
2026-06-23T10:05:46.9320907Z         "int": {
2026-06-23T10:05:46.9321000Z           "complete": true,
2026-06-23T10:05:46.9321086Z           "evidence": [
2026-06-23T10:05:46.9321173Z             {
2026-06-23T10:05:46.9321315Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-23T10:05:46.9321411Z               "line": 238
2026-06-23T10:05:46.9321492Z             },
2026-06-23T10:05:46.9321583Z             {
2026-06-23T10:05:46.9321726Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-23T10:05:46.9321812Z               "line": 398
2026-06-23T10:05:46.9321902Z             },
2026-06-23T10:05:46.9321983Z             {
2026-06-23T10:05:46.9322136Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T10:05:46.9322322Z               "line": 1621
2026-06-23T10:05:46.9322404Z             },
2026-06-23T10:05:46.9322489Z             {
2026-06-23T10:05:46.9322622Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T10:05:46.9322709Z               "line": 1799
2026-06-23T10:05:46.9322794Z             }
2026-06-23T10:05:46.9322879Z           ]
2026-06-23T10:05:46.9322956Z         },
2026-06-23T10:05:46.9323043Z         "unit": {
2026-06-23T10:05:46.9323128Z           "complete": true,
2026-06-23T10:05:46.9323207Z           "evidence": [
2026-06-23T10:05:46.9323284Z             {
2026-06-23T10:05:46.9323508Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9323598Z               "line": 938
2026-06-23T10:05:46.9323680Z             }
2026-06-23T10:05:46.9323765Z           ]
2026-06-23T10:05:46.9323851Z         }
2026-06-23T10:05:46.9323932Z       }
2026-06-23T10:05:46.9324019Z     },
2026-06-23T10:05:46.9324099Z     {
2026-06-23T10:05:46.9324227Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-23T10:05:46.9324386Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-23T10:05:46.9324486Z       "requiredStages": [
2026-06-23T10:05:46.9324566Z         "impl",
2026-06-23T10:05:46.9324643Z         "unit"
2026-06-23T10:05:46.9324729Z       ],
2026-06-23T10:05:46.9324810Z       "stages": {
2026-06-23T10:05:46.9324896Z         "doc": {
2026-06-23T10:05:46.9324992Z           "complete": false,
2026-06-23T10:05:46.9325085Z           "evidence": []
2026-06-23T10:05:46.9325167Z         },
2026-06-23T10:05:46.9325254Z         "impl": {
2026-06-23T10:05:46.9325354Z           "complete": true,
2026-06-23T10:05:46.9325434Z           "evidence": [
2026-06-23T10:05:46.9325519Z             {
2026-06-23T10:05:46.9325629Z               "path": "crates/spt-live/src/echo.rs",
2026-06-23T10:05:46.9325718Z               "line": 25
2026-06-23T10:05:46.9325803Z             },
2026-06-23T10:05:46.9325889Z             {
2026-06-23T10:05:46.9325999Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T10:05:46.9326094Z               "line": 26
2026-06-23T10:05:46.9326189Z             },
2026-06-23T10:05:46.9326276Z             {
2026-06-23T10:05:46.9326389Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T10:05:46.9326484Z               "line": 159
2026-06-23T10:05:46.9326567Z             }
2026-06-23T10:05:46.9326642Z           ]
2026-06-23T10:05:46.9326723Z         },
2026-06-23T10:05:46.9326808Z         "int": {
2026-06-23T10:05:46.9326905Z           "complete": false,
2026-06-23T10:05:46.9326995Z           "evidence": []
2026-06-23T10:05:46.9327085Z         },
2026-06-23T10:05:46.9327172Z         "unit": {
2026-06-23T10:05:46.9327276Z           "complete": true,
2026-06-23T10:05:46.9327367Z           "evidence": [
2026-06-23T10:05:46.9327452Z             {
2026-06-23T10:05:46.9327563Z               "path": "crates/spt-live/src/echo.rs",
2026-06-23T10:05:46.9327652Z               "line": 188
2026-06-23T10:05:46.9327739Z             },
2026-06-23T10:05:46.9327826Z             {
2026-06-23T10:05:46.9327939Z               "path": "crates/spt-live/src/echo.rs",
2026-06-23T10:05:46.9328025Z               "line": 240
2026-06-23T10:05:46.9328112Z             },
2026-06-23T10:05:46.9328198Z             {
2026-06-23T10:05:46.9328310Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T10:05:46.9328390Z               "line": 186
2026-06-23T10:05:46.9328477Z             }
2026-06-23T10:05:46.9328566Z           ]
2026-06-23T10:05:46.9328651Z         }
2026-06-23T10:05:46.9328736Z       }
2026-06-23T10:05:46.9328828Z     },
2026-06-23T10:05:46.9328909Z     {
2026-06-23T10:05:46.9329094Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-23T10:05:46.9329261Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-23T10:05:46.9329375Z       "requiredStages": [
2026-06-23T10:05:46.9329458Z         "impl",
2026-06-23T10:05:46.9329553Z         "unit"
2026-06-23T10:05:46.9329628Z       ],
2026-06-23T10:05:46.9329810Z       "stages": {
2026-06-23T10:05:46.9329896Z         "doc": {
2026-06-23T10:05:46.9329977Z           "complete": false,
2026-06-23T10:05:46.9330068Z           "evidence": []
2026-06-23T10:05:46.9330149Z         },
2026-06-23T10:05:46.9330234Z         "impl": {
2026-06-23T10:05:46.9330334Z           "complete": true,
2026-06-23T10:05:46.9330412Z           "evidence": [
2026-06-23T10:05:46.9330496Z             {
2026-06-23T10:05:46.9330606Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T10:05:46.9330693Z               "line": 48
2026-06-23T10:05:46.9330764Z             },
2026-06-23T10:05:46.9330948Z             {
2026-06-23T10:05:46.9331072Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T10:05:46.9331152Z               "line": 55
2026-06-23T10:05:46.9331241Z             },
2026-06-23T10:05:46.9331322Z             {
2026-06-23T10:05:46.9331428Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T10:05:46.9331518Z               "line": 74
2026-06-23T10:05:46.9331618Z             },
2026-06-23T10:05:46.9331695Z             {
2026-06-23T10:05:46.9331795Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T10:05:46.9331885Z               "line": 91
2026-06-23T10:05:46.9331966Z             }
2026-06-23T10:05:46.9332052Z           ]
2026-06-23T10:05:46.9332133Z         },
2026-06-23T10:05:46.9332223Z         "int": {
2026-06-23T10:05:46.9332316Z           "complete": false,
2026-06-23T10:05:46.9332410Z           "evidence": []
2026-06-23T10:05:46.9332496Z         },
2026-06-23T10:05:46.9332581Z         "unit": {
2026-06-23T10:05:46.9332678Z           "complete": true,
2026-06-23T10:05:46.9332772Z           "evidence": [
2026-06-23T10:05:46.9332853Z             {
2026-06-23T10:05:46.9332964Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T10:05:46.9333053Z               "line": 149
2026-06-23T10:05:46.9333140Z             },
2026-06-23T10:05:46.9333226Z             {
2026-06-23T10:05:46.9333331Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T10:05:46.9333425Z               "line": 166
2026-06-23T10:05:46.9333506Z             },
2026-06-23T10:05:46.9333589Z             {
2026-06-23T10:05:46.9333693Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T10:05:46.9333777Z               "line": 176
2026-06-23T10:05:46.9333853Z             },
2026-06-23T10:05:46.9333944Z             {
2026-06-23T10:05:46.9334050Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T10:05:46.9334139Z               "line": 194
2026-06-23T10:05:46.9334226Z             },
2026-06-23T10:05:46.9334312Z             {
2026-06-23T10:05:46.9334425Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T10:05:46.9334506Z               "line": 207
2026-06-23T10:05:46.9334593Z             }
2026-06-23T10:05:46.9334674Z           ]
2026-06-23T10:05:46.9334754Z         }
2026-06-23T10:05:46.9334840Z       }
2026-06-23T10:05:46.9334922Z     },
2026-06-23T10:05:46.9335007Z     {
2026-06-23T10:05:46.9335122Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-23T10:05:46.9335303Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-23T10:05:46.9335398Z       "requiredStages": [
2026-06-23T10:05:46.9335490Z         "impl",
2026-06-23T10:05:46.9335580Z         "unit"
2026-06-23T10:05:46.9335660Z       ],
2026-06-23T10:05:46.9335756Z       "stages": {
2026-06-23T10:05:46.9335843Z         "doc": {
2026-06-23T10:05:46.9335937Z           "complete": false,
2026-06-23T10:05:46.9336017Z           "evidence": []
2026-06-23T10:05:46.9336102Z         },
2026-06-23T10:05:46.9336189Z         "impl": {
2026-06-23T10:05:46.9336287Z           "complete": true,
2026-06-23T10:05:46.9336382Z           "evidence": [
2026-06-23T10:05:46.9336473Z             {
2026-06-23T10:05:46.9336607Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.9336692Z               "line": 677
2026-06-23T10:05:46.9336778Z             },
2026-06-23T10:05:46.9336859Z             {
2026-06-23T10:05:46.9337063Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-23T10:05:46.9337156Z               "line": 26
2026-06-23T10:05:46.9337241Z             }
2026-06-23T10:05:46.9337330Z           ]
2026-06-23T10:05:46.9337413Z         },
2026-06-23T10:05:46.9337503Z         "int": {
2026-06-23T10:05:46.9337598Z           "complete": false,
2026-06-23T10:05:46.9337684Z           "evidence": []
2026-06-23T10:05:46.9337770Z         },
2026-06-23T10:05:46.9337855Z         "unit": {
2026-06-23T10:05:46.9337955Z           "complete": true,
2026-06-23T10:05:46.9338042Z           "evidence": [
2026-06-23T10:05:46.9338194Z             {
2026-06-23T10:05:46.9338318Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-23T10:05:46.9338400Z               "line": 150
2026-06-23T10:05:46.9338481Z             },
2026-06-23T10:05:46.9338556Z             {
2026-06-23T10:05:46.9338672Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-23T10:05:46.9338763Z               "line": 208
2026-06-23T10:05:46.9338856Z             }
2026-06-23T10:05:46.9339032Z           ]
2026-06-23T10:05:46.9339108Z         }
2026-06-23T10:05:46.9339197Z       }
2026-06-23T10:05:46.9339282Z     },
2026-06-23T10:05:46.9339364Z     {
2026-06-23T10:05:46.9339493Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-23T10:05:46.9348402Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-23T10:05:46.9348684Z       "requiredStages": [
2026-06-23T10:05:46.9348768Z         "impl",
2026-06-23T10:05:46.9348849Z         "unit",
2026-06-23T10:05:46.9349036Z         "int"
2026-06-23T10:05:46.9349111Z       ],
2026-06-23T10:05:46.9349309Z       "stages": {
2026-06-23T10:05:46.9349393Z         "doc": {
2026-06-23T10:05:46.9349488Z           "complete": false,
2026-06-23T10:05:46.9349573Z           "evidence": []
2026-06-23T10:05:46.9349659Z         },
2026-06-23T10:05:46.9349738Z         "impl": {
2026-06-23T10:05:46.9349833Z           "complete": true,
2026-06-23T10:05:46.9349933Z           "evidence": [
2026-06-23T10:05:46.9350025Z             {
2026-06-23T10:05:46.9350152Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T10:05:46.9350244Z               "line": 99
2026-06-23T10:05:46.9350334Z             },
2026-06-23T10:05:46.9350419Z             {
2026-06-23T10:05:46.9350535Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T10:05:46.9350634Z               "line": 201
2026-06-23T10:05:46.9350715Z             }
2026-06-23T10:05:46.9350801Z           ]
2026-06-23T10:05:46.9350888Z         },
2026-06-23T10:05:46.9350972Z         "int": {
2026-06-23T10:05:46.9351068Z           "complete": true,
2026-06-23T10:05:46.9351164Z           "evidence": [
2026-06-23T10:05:46.9351246Z             {
2026-06-23T10:05:46.9351397Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T10:05:46.9351494Z               "line": 855
2026-06-23T10:05:46.9351575Z             }
2026-06-23T10:05:46.9351654Z           ]
2026-06-23T10:05:46.9351741Z         },
2026-06-23T10:05:46.9351827Z         "unit": {
2026-06-23T10:05:46.9351922Z           "complete": true,
2026-06-23T10:05:46.9352002Z           "evidence": [
2026-06-23T10:05:46.9352087Z             {
2026-06-23T10:05:46.9352197Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T10:05:46.9352281Z               "line": 517
2026-06-23T10:05:46.9352371Z             },
2026-06-23T10:05:46.9352452Z             {
2026-06-23T10:05:46.9352568Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T10:05:46.9352657Z               "line": 576
2026-06-23T10:05:46.9352748Z             }
2026-06-23T10:05:46.9352825Z           ]
2026-06-23T10:05:46.9352916Z         }
2026-06-23T10:05:46.9353005Z       }
2026-06-23T10:05:46.9353077Z     },
2026-06-23T10:05:46.9353163Z     {
2026-06-23T10:05:46.9353287Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-23T10:05:46.9354545Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-23T10:05:46.9354651Z       "requiredStages": [
2026-06-23T10:05:46.9354733Z         "doc",
2026-06-23T10:05:46.9354822Z         "impl",
2026-06-23T10:05:46.9354907Z         "unit"
2026-06-23T10:05:46.9354993Z       ],
2026-06-23T10:05:46.9355079Z       "stages": {
2026-06-23T10:05:46.9355170Z         "doc": {
2026-06-23T10:05:46.9355273Z           "complete": true,
2026-06-23T10:05:46.9355356Z           "evidence": [
2026-06-23T10:05:46.9355442Z             {
2026-06-23T10:05:46.9355546Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9355632Z               "line": 214
2026-06-23T10:05:46.9355713Z             }
2026-06-23T10:05:46.9355804Z           ]
2026-06-23T10:05:46.9355889Z         },
2026-06-23T10:05:46.9356080Z         "impl": {
2026-06-23T10:05:46.9356180Z           "complete": true,
2026-06-23T10:05:46.9356271Z           "evidence": [
2026-06-23T10:05:46.9356357Z             {
2026-06-23T10:05:46.9356481Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9356571Z               "line": 56
2026-06-23T10:05:46.9356663Z             },
2026-06-23T10:05:46.9356748Z             {
2026-06-23T10:05:46.9356866Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9356954Z               "line": 580
2026-06-23T10:05:46.9357044Z             },
2026-06-23T10:05:46.9357200Z             {
2026-06-23T10:05:46.9357333Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T10:05:46.9357422Z               "line": 36
2026-06-23T10:05:46.9357507Z             },
2026-06-23T10:05:46.9357598Z             {
2026-06-23T10:05:46.9357718Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T10:05:46.9357807Z               "line": 59
2026-06-23T10:05:46.9357898Z             },
2026-06-23T10:05:46.9357980Z             {
2026-06-23T10:05:46.9358103Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T10:05:46.9358193Z               "line": 83
2026-06-23T10:05:46.9358271Z             },
2026-06-23T10:05:46.9358356Z             {
2026-06-23T10:05:46.9358479Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T10:05:46.9358557Z               "line": 140
2026-06-23T10:05:46.9358643Z             },
2026-06-23T10:05:46.9358728Z             {
2026-06-23T10:05:46.9358842Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T10:05:46.9359024Z               "line": 159
2026-06-23T10:05:46.9359104Z             },
2026-06-23T10:05:46.9359192Z             {
2026-06-23T10:05:46.9359314Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T10:05:46.9359395Z               "line": 384
2026-06-23T10:05:46.9359477Z             },
2026-06-23T10:05:46.9359558Z             {
2026-06-23T10:05:46.9359691Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T10:05:46.9359768Z               "line": 535
2026-06-23T10:05:46.9359854Z             },
2026-06-23T10:05:46.9359939Z             {
2026-06-23T10:05:46.9360048Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T10:05:46.9360148Z               "line": 581
2026-06-23T10:05:46.9360224Z             },
2026-06-23T10:05:46.9360308Z             {
2026-06-23T10:05:46.9360421Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.9360518Z               "line": 300
2026-06-23T10:05:46.9360609Z             },
2026-06-23T10:05:46.9360693Z             {
2026-06-23T10:05:46.9360799Z               "path": "crates/spt/src/main.rs",
2026-06-23T10:05:46.9360880Z               "line": 42
2026-06-23T10:05:46.9360966Z             }
2026-06-23T10:05:46.9361046Z           ]
2026-06-23T10:05:46.9361128Z         },
2026-06-23T10:05:46.9361204Z         "int": {
2026-06-23T10:05:46.9361299Z           "complete": false,
2026-06-23T10:05:46.9361395Z           "evidence": []
2026-06-23T10:05:46.9361481Z         },
2026-06-23T10:05:46.9361561Z         "unit": {
2026-06-23T10:05:46.9361647Z           "complete": true,
2026-06-23T10:05:46.9361734Z           "evidence": [
2026-06-23T10:05:46.9361820Z             {
2026-06-23T10:05:46.9361943Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T10:05:46.9362024Z               "line": 813
2026-06-23T10:05:46.9362101Z             },
2026-06-23T10:05:46.9362191Z             {
2026-06-23T10:05:46.9362301Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T10:05:46.9362402Z               "line": 854
2026-06-23T10:05:46.9362482Z             },
2026-06-23T10:05:46.9362567Z             {
2026-06-23T10:05:46.9362681Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T10:05:46.9362767Z               "line": 928
2026-06-23T10:05:46.9362851Z             }
2026-06-23T10:05:46.9362931Z           ]
2026-06-23T10:05:46.9363118Z         }
2026-06-23T10:05:46.9363198Z       }
2026-06-23T10:05:46.9363284Z     },
2026-06-23T10:05:46.9363371Z     {
2026-06-23T10:05:46.9363495Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-23T10:05:46.9368315Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-23T10:05:46.9368531Z       "requiredStages": [
2026-06-23T10:05:46.9368625Z         "impl",
2026-06-23T10:05:46.9368701Z         "unit",
2026-06-23T10:05:46.9368788Z         "int"
2026-06-23T10:05:46.9368883Z       ],
2026-06-23T10:05:46.9369039Z       "stages": {
2026-06-23T10:05:46.9369131Z         "doc": {
2026-06-23T10:05:46.9369226Z           "complete": false,
2026-06-23T10:05:46.9369316Z           "evidence": []
2026-06-23T10:05:46.9369398Z         },
2026-06-23T10:05:46.9372051Z         "impl": {
2026-06-23T10:05:46.9372174Z           "complete": true,
2026-06-23T10:05:46.9372265Z           "evidence": [
2026-06-23T10:05:46.9372347Z             {
2026-06-23T10:05:46.9372484Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T10:05:46.9372594Z               "line": 204
2026-06-23T10:05:46.9372671Z             }
2026-06-23T10:05:46.9372760Z           ]
2026-06-23T10:05:46.9372846Z         },
2026-06-23T10:05:46.9372929Z         "int": {
2026-06-23T10:05:46.9373029Z           "complete": true,
2026-06-23T10:05:46.9373113Z           "evidence": [
2026-06-23T10:05:46.9373207Z             {
2026-06-23T10:05:46.9373341Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-23T10:05:46.9373430Z               "line": 296
2026-06-23T10:05:46.9373525Z             }
2026-06-23T10:05:46.9373592Z           ]
2026-06-23T10:05:46.9373678Z         },
2026-06-23T10:05:46.9373763Z         "unit": {
2026-06-23T10:05:46.9373853Z           "complete": true,
2026-06-23T10:05:46.9373936Z           "evidence": [
2026-06-23T10:05:46.9374021Z             {
2026-06-23T10:05:46.9374149Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T10:05:46.9374226Z               "line": 469
2026-06-23T10:05:46.9374317Z             }
2026-06-23T10:05:46.9374398Z           ]
2026-06-23T10:05:46.9374483Z         }
2026-06-23T10:05:46.9374556Z       }
2026-06-23T10:05:46.9374632Z     },
2026-06-23T10:05:46.9374713Z     {
2026-06-23T10:05:46.9374817Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-23T10:05:46.9378131Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-23T10:05:46.9378481Z       "requiredStages": [
2026-06-23T10:05:46.9378566Z         "impl",
2026-06-23T10:05:46.9378651Z         "unit",
2026-06-23T10:05:46.9378733Z         "int"
2026-06-23T10:05:46.9378814Z       ],
2026-06-23T10:05:46.9378899Z       "stages": {
2026-06-23T10:05:46.9379067Z         "doc": {
2026-06-23T10:05:46.9379157Z           "complete": false,
2026-06-23T10:05:46.9379247Z           "evidence": []
2026-06-23T10:05:46.9379333Z         },
2026-06-23T10:05:46.9379420Z         "impl": {
2026-06-23T10:05:46.9379519Z           "complete": true,
2026-06-23T10:05:46.9379609Z           "evidence": [
2026-06-23T10:05:46.9379692Z             {
2026-06-23T10:05:46.9379829Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T10:05:46.9379919Z               "line": 123
2026-06-23T10:05:46.9380002Z             },
2026-06-23T10:05:46.9380082Z             {
2026-06-23T10:05:46.9380206Z               "path": "crates/spt-term/src/pty.rs",
2026-06-23T10:05:46.9380292Z               "line": 134
2026-06-23T10:05:46.9380373Z             }
2026-06-23T10:05:46.9380458Z           ]
2026-06-23T10:05:46.9380544Z         },
2026-06-23T10:05:46.9380631Z         "int": {
2026-06-23T10:05:46.9380721Z           "complete": true,
2026-06-23T10:05:46.9380816Z           "evidence": [
2026-06-23T10:05:46.9380893Z             {
2026-06-23T10:05:46.9381017Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-23T10:05:46.9381116Z               "line": 314
2026-06-23T10:05:46.9381191Z             },
2026-06-23T10:05:46.9381278Z             {
2026-06-23T10:05:46.9381395Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-23T10:05:46.9381489Z               "line": 531
2026-06-23T10:05:46.9381566Z             }
2026-06-23T10:05:46.9381643Z           ]
2026-06-23T10:05:46.9381729Z         },
2026-06-23T10:05:46.9381809Z         "unit": {
2026-06-23T10:05:46.9381900Z           "complete": true,
2026-06-23T10:05:46.9382001Z           "evidence": [
2026-06-23T10:05:46.9382081Z             {
2026-06-23T10:05:46.9382200Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T10:05:46.9382292Z               "line": 256
2026-06-23T10:05:46.9382373Z             }
2026-06-23T10:05:46.9382452Z           ]
2026-06-23T10:05:46.9382534Z         }
2026-06-23T10:05:46.9382621Z       }
2026-06-23T10:05:46.9382691Z     },
2026-06-23T10:05:46.9382772Z     {
2026-06-23T10:05:46.9382879Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-23T10:05:46.9384606Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-23T10:05:46.9384835Z       "requiredStages": [
2026-06-23T10:05:46.9384915Z         "impl",
2026-06-23T10:05:46.9385005Z         "unit"
2026-06-23T10:05:46.9385092Z       ],
2026-06-23T10:05:46.9385178Z       "stages": {
2026-06-23T10:05:46.9385263Z         "doc": {
2026-06-23T10:05:46.9385353Z           "complete": false,
2026-06-23T10:05:46.9385450Z           "evidence": []
2026-06-23T10:05:46.9385530Z         },
2026-06-23T10:05:46.9385616Z         "impl": {
2026-06-23T10:05:46.9385808Z           "complete": true,
2026-06-23T10:05:46.9385901Z           "evidence": [
2026-06-23T10:05:46.9385988Z             {
2026-06-23T10:05:46.9386118Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T10:05:46.9386211Z               "line": 31
2026-06-23T10:05:46.9386283Z             }
2026-06-23T10:05:46.9386361Z           ]
2026-06-23T10:05:46.9386452Z         },
2026-06-23T10:05:46.9386531Z         "int": {
2026-06-23T10:05:46.9386621Z           "complete": false,
2026-06-23T10:05:46.9386711Z           "evidence": []
2026-06-23T10:05:46.9386793Z         },
2026-06-23T10:05:46.9386878Z         "unit": {
2026-06-23T10:05:46.9386968Z           "complete": true,
2026-06-23T10:05:46.9387055Z           "evidence": [
2026-06-23T10:05:46.9387141Z             {
2026-06-23T10:05:46.9387259Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T10:05:46.9387356Z               "line": 181
2026-06-23T10:05:46.9387436Z             }
2026-06-23T10:05:46.9387522Z           ]
2026-06-23T10:05:46.9387608Z         }
2026-06-23T10:05:46.9387690Z       }
2026-06-23T10:05:46.9387775Z     },
2026-06-23T10:05:46.9387855Z     {
2026-06-23T10:05:46.9387971Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-23T10:05:46.9388127Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-23T10:05:46.9388218Z       "requiredStages": [
2026-06-23T10:05:46.9388310Z         "impl",
2026-06-23T10:05:46.9388395Z         "unit"
2026-06-23T10:05:46.9388480Z       ],
2026-06-23T10:05:46.9388557Z       "stages": {
2026-06-23T10:05:46.9388644Z         "doc": {
2026-06-23T10:05:46.9388738Z           "complete": false,
2026-06-23T10:05:46.9388818Z           "evidence": []
2026-06-23T10:05:46.9388898Z         },
2026-06-23T10:05:46.9389069Z         "impl": {
2026-06-23T10:05:46.9389164Z           "complete": true,
2026-06-23T10:05:46.9389254Z           "evidence": [
2026-06-23T10:05:46.9389341Z             {
2026-06-23T10:05:46.9389459Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T10:05:46.9389545Z               "line": 49
2026-06-23T10:05:46.9389622Z             },
2026-06-23T10:05:46.9389708Z             {
2026-06-23T10:05:46.9389835Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T10:05:46.9389918Z               "line": 81
2026-06-23T10:05:46.9390008Z             }
2026-06-23T10:05:46.9390098Z           ]
2026-06-23T10:05:46.9390174Z         },
2026-06-23T10:05:46.9390262Z         "int": {
2026-06-23T10:05:46.9390351Z           "complete": false,
2026-06-23T10:05:46.9390436Z           "evidence": []
2026-06-23T10:05:46.9390523Z         },
2026-06-23T10:05:46.9390614Z         "unit": {
2026-06-23T10:05:46.9390699Z           "complete": true,
2026-06-23T10:05:46.9390780Z           "evidence": [
2026-06-23T10:05:46.9390862Z             {
2026-06-23T10:05:46.9390966Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T10:05:46.9391047Z               "line": 156
2026-06-23T10:05:46.9391133Z             },
2026-06-23T10:05:46.9391225Z             {
2026-06-23T10:05:46.9391347Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T10:05:46.9391438Z               "line": 173
2026-06-23T10:05:46.9391526Z             },
2026-06-23T10:05:46.9391605Z             {
2026-06-23T10:05:46.9391723Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T10:05:46.9391913Z               "line": 196
2026-06-23T10:05:46.9391998Z             }
2026-06-23T10:05:46.9392083Z           ]
2026-06-23T10:05:46.9392160Z         }
2026-06-23T10:05:46.9392246Z       }
2026-06-23T10:05:46.9392327Z     },
2026-06-23T10:05:46.9392412Z     {
2026-06-23T10:05:46.9392527Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-23T10:05:46.9392703Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-23T10:05:46.9392800Z       "requiredStages": [
2026-06-23T10:05:46.9392885Z         "impl",
2026-06-23T10:05:46.9392965Z         "unit"
2026-06-23T10:05:46.9393041Z       ],
2026-06-23T10:05:46.9393223Z       "stages": {
2026-06-23T10:05:46.9393314Z         "doc": {
2026-06-23T10:05:46.9393400Z           "complete": false,
2026-06-23T10:05:46.9393481Z           "evidence": []
2026-06-23T10:05:46.9393566Z         },
2026-06-23T10:05:46.9393652Z         "impl": {
2026-06-23T10:05:46.9393739Z           "complete": true,
2026-06-23T10:05:46.9393825Z           "evidence": [
2026-06-23T10:05:46.9393914Z             {
2026-06-23T10:05:46.9394030Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T10:05:46.9394111Z               "line": 120
2026-06-23T10:05:46.9394196Z             }
2026-06-23T10:05:46.9394280Z           ]
2026-06-23T10:05:46.9394356Z         },
2026-06-23T10:05:46.9394442Z         "int": {
2026-06-23T10:05:46.9394545Z           "complete": false,
2026-06-23T10:05:46.9394635Z           "evidence": []
2026-06-23T10:05:46.9394727Z         },
2026-06-23T10:05:46.9394803Z         "unit": {
2026-06-23T10:05:46.9394898Z           "complete": true,
2026-06-23T10:05:46.9394988Z           "evidence": [
2026-06-23T10:05:46.9395066Z             {
2026-06-23T10:05:46.9395185Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T10:05:46.9395260Z               "line": 212
2026-06-23T10:05:46.9395342Z             },
2026-06-23T10:05:46.9395423Z             {
2026-06-23T10:05:46.9395542Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T10:05:46.9395618Z               "line": 221
2026-06-23T10:05:46.9395700Z             },
2026-06-23T10:05:46.9395780Z             {
2026-06-23T10:05:46.9395889Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T10:05:46.9395986Z               "line": 229
2026-06-23T10:05:46.9396057Z             },
2026-06-23T10:05:46.9396148Z             {
2026-06-23T10:05:46.9396257Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T10:05:46.9396344Z               "line": 239
2026-06-23T10:05:46.9396433Z             },
2026-06-23T10:05:46.9396515Z             {
2026-06-23T10:05:46.9396635Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T10:05:46.9396725Z               "line": 249
2026-06-23T10:05:46.9396810Z             }
2026-06-23T10:05:46.9396892Z           ]
2026-06-23T10:05:46.9396983Z         }
2026-06-23T10:05:46.9397068Z       }
2026-06-23T10:05:46.9397152Z     },
2026-06-23T10:05:46.9397233Z     {
2026-06-23T10:05:46.9397339Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-23T10:05:46.9397510Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-23T10:05:46.9397596Z       "requiredStages": [
2026-06-23T10:05:46.9397677Z         "impl",
2026-06-23T10:05:46.9397767Z         "unit"
2026-06-23T10:05:46.9397848Z       ],
2026-06-23T10:05:46.9397940Z       "stages": {
2026-06-23T10:05:46.9398020Z         "doc": {
2026-06-23T10:05:46.9398115Z           "complete": false,
2026-06-23T10:05:46.9398201Z           "evidence": []
2026-06-23T10:05:46.9398293Z         },
2026-06-23T10:05:46.9398378Z         "impl": {
2026-06-23T10:05:46.9398463Z           "complete": true,
2026-06-23T10:05:46.9398550Z           "evidence": [
2026-06-23T10:05:46.9398636Z             {
2026-06-23T10:05:46.9398749Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T10:05:46.9398841Z               "line": 14
2026-06-23T10:05:46.9398927Z             },
2026-06-23T10:05:46.9399097Z             {
2026-06-23T10:05:46.9399204Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T10:05:46.9399388Z               "line": 63
2026-06-23T10:05:46.9399473Z             }
2026-06-23T10:05:46.9399559Z           ]
2026-06-23T10:05:46.9399643Z         },
2026-06-23T10:05:46.9399724Z         "int": {
2026-06-23T10:05:46.9399819Z           "complete": false,
2026-06-23T10:05:46.9399906Z           "evidence": []
2026-06-23T10:05:46.9399995Z         },
2026-06-23T10:05:46.9400076Z         "unit": {
2026-06-23T10:05:46.9400167Z           "complete": true,
2026-06-23T10:05:46.9400249Z           "evidence": [
2026-06-23T10:05:46.9400329Z             {
2026-06-23T10:05:46.9400535Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T10:05:46.9400621Z               "line": 164
2026-06-23T10:05:46.9400701Z             },
2026-06-23T10:05:46.9400788Z             {
2026-06-23T10:05:46.9400897Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T10:05:46.9400982Z               "line": 198
2026-06-23T10:05:46.9401063Z             },
2026-06-23T10:05:46.9401155Z             {
2026-06-23T10:05:46.9401260Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T10:05:46.9401345Z               "line": 220
2026-06-23T10:05:46.9401432Z             }
2026-06-23T10:05:46.9401517Z           ]
2026-06-23T10:05:46.9401588Z         }
2026-06-23T10:05:46.9401669Z       }
2026-06-23T10:05:46.9401751Z     },
2026-06-23T10:05:46.9401836Z     {
2026-06-23T10:05:46.9401946Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-23T10:05:46.9403230Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-23T10:05:46.9403350Z       "requiredStages": [],
2026-06-23T10:05:46.9403440Z       "stages": {
2026-06-23T10:05:46.9403525Z         "doc": {
2026-06-23T10:05:46.9403611Z           "complete": true,
2026-06-23T10:05:46.9403698Z           "evidence": [
2026-06-23T10:05:46.9403783Z             {
2026-06-23T10:05:46.9403893Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9403969Z               "line": 165
2026-06-23T10:05:46.9404060Z             }
2026-06-23T10:05:46.9404140Z           ]
2026-06-23T10:05:46.9404217Z         },
2026-06-23T10:05:46.9404304Z         "impl": {
2026-06-23T10:05:46.9404394Z           "complete": false,
2026-06-23T10:05:46.9404474Z           "evidence": []
2026-06-23T10:05:46.9404560Z         },
2026-06-23T10:05:46.9404648Z         "int": {
2026-06-23T10:05:46.9404742Z           "complete": false,
2026-06-23T10:05:46.9404831Z           "evidence": []
2026-06-23T10:05:46.9404912Z         },
2026-06-23T10:05:46.9404998Z         "unit": {
2026-06-23T10:05:46.9405082Z           "complete": false,
2026-06-23T10:05:46.9405167Z           "evidence": []
2026-06-23T10:05:46.9405258Z         }
2026-06-23T10:05:46.9405340Z       }
2026-06-23T10:05:46.9405425Z     },
2026-06-23T10:05:46.9405505Z     {
2026-06-23T10:05:46.9405626Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-23T10:05:46.9405839Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-23T10:05:46.9405940Z       "requiredStages": [
2026-06-23T10:05:46.9406031Z         "impl",
2026-06-23T10:05:46.9406116Z         "unit"
2026-06-23T10:05:46.9406207Z       ],
2026-06-23T10:05:46.9406293Z       "stages": {
2026-06-23T10:05:46.9406373Z         "doc": {
2026-06-23T10:05:46.9406468Z           "complete": false,
2026-06-23T10:05:46.9406565Z           "evidence": []
2026-06-23T10:05:46.9406646Z         },
2026-06-23T10:05:46.9406732Z         "impl": {
2026-06-23T10:05:46.9406817Z           "complete": true,
2026-06-23T10:05:46.9406904Z           "evidence": [
2026-06-23T10:05:46.9406989Z             {
2026-06-23T10:05:46.9407103Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T10:05:46.9407266Z               "line": 76
2026-06-23T10:05:46.9407346Z             },
2026-06-23T10:05:46.9407432Z             {
2026-06-23T10:05:46.9407538Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T10:05:46.9407618Z               "line": 167
2026-06-23T10:05:46.9407707Z             },
2026-06-23T10:05:46.9407779Z             {
2026-06-23T10:05:46.9407895Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T10:05:46.9407985Z               "line": 233
2026-06-23T10:05:46.9408060Z             },
2026-06-23T10:05:46.9408147Z             {
2026-06-23T10:05:46.9408337Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T10:05:46.9408437Z               "line": 272
2026-06-23T10:05:46.9408514Z             }
2026-06-23T10:05:46.9408600Z           ]
2026-06-23T10:05:46.9408694Z         },
2026-06-23T10:05:46.9408771Z         "int": {
2026-06-23T10:05:46.9408872Z           "complete": false,
2026-06-23T10:05:46.9409028Z           "evidence": []
2026-06-23T10:05:46.9409115Z         },
2026-06-23T10:05:46.9409187Z         "unit": {
2026-06-23T10:05:46.9409282Z           "complete": true,
2026-06-23T10:05:46.9409362Z           "evidence": [
2026-06-23T10:05:46.9409440Z             {
2026-06-23T10:05:46.9409553Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T10:05:46.9409639Z               "line": 321
2026-06-23T10:05:46.9409730Z             },
2026-06-23T10:05:46.9409807Z             {
2026-06-23T10:05:46.9409910Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T10:05:46.9410000Z               "line": 329
2026-06-23T10:05:46.9410086Z             },
2026-06-23T10:05:46.9410176Z             {
2026-06-23T10:05:46.9410279Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T10:05:46.9410370Z               "line": 356
2026-06-23T10:05:46.9410456Z             },
2026-06-23T10:05:46.9410542Z             {
2026-06-23T10:05:46.9410651Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T10:05:46.9410723Z               "line": 395
2026-06-23T10:05:46.9410804Z             },
2026-06-23T10:05:46.9410875Z             {
2026-06-23T10:05:46.9410984Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T10:05:46.9411077Z               "line": 406
2026-06-23T10:05:46.9411157Z             },
2026-06-23T10:05:46.9411242Z             {
2026-06-23T10:05:46.9411353Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T10:05:46.9411438Z               "line": 418
2026-06-23T10:05:46.9411524Z             },
2026-06-23T10:05:46.9411614Z             {
2026-06-23T10:05:46.9411739Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T10:05:46.9411825Z               "line": 442
2026-06-23T10:05:46.9411905Z             }
2026-06-23T10:05:46.9411982Z           ]
2026-06-23T10:05:46.9412073Z         }
2026-06-23T10:05:46.9412158Z       }
2026-06-23T10:05:46.9412234Z     },
2026-06-23T10:05:46.9412311Z     {
2026-06-23T10:05:46.9412420Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-23T10:05:46.9412573Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-23T10:05:46.9412670Z       "requiredStages": [
2026-06-23T10:05:46.9412749Z         "impl",
2026-06-23T10:05:46.9412834Z         "int"
2026-06-23T10:05:46.9412920Z       ],
2026-06-23T10:05:46.9413015Z       "stages": {
2026-06-23T10:05:46.9413094Z         "doc": {
2026-06-23T10:05:46.9413194Z           "complete": false,
2026-06-23T10:05:46.9413280Z           "evidence": []
2026-06-23T10:05:46.9413366Z         },
2026-06-23T10:05:46.9413447Z         "impl": {
2026-06-23T10:05:46.9413532Z           "complete": true,
2026-06-23T10:05:46.9413624Z           "evidence": [
2026-06-23T10:05:46.9413700Z             {
2026-06-23T10:05:46.9413823Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9413905Z               "line": 22
2026-06-23T10:05:46.9413990Z             }
2026-06-23T10:05:46.9414071Z           ]
2026-06-23T10:05:46.9414157Z         },
2026-06-23T10:05:46.9414367Z         "int": {
2026-06-23T10:05:46.9414453Z           "complete": true,
2026-06-23T10:05:46.9414559Z           "evidence": [
2026-06-23T10:05:46.9414639Z             {
2026-06-23T10:05:46.9414767Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-23T10:05:46.9414854Z               "line": 18
2026-06-23T10:05:46.9414940Z             }
2026-06-23T10:05:46.9415025Z           ]
2026-06-23T10:05:46.9415106Z         },
2026-06-23T10:05:46.9415193Z         "unit": {
2026-06-23T10:05:46.9415288Z           "complete": false,
2026-06-23T10:05:46.9415368Z           "evidence": []
2026-06-23T10:05:46.9415539Z         }
2026-06-23T10:05:46.9415633Z       }
2026-06-23T10:05:46.9415723Z     },
2026-06-23T10:05:46.9415799Z     {
2026-06-23T10:05:46.9415914Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-23T10:05:46.9416084Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-23T10:05:46.9416186Z       "requiredStages": [
2026-06-23T10:05:46.9416267Z         "impl",
2026-06-23T10:05:46.9416366Z         "unit"
2026-06-23T10:05:46.9416457Z       ],
2026-06-23T10:05:46.9416538Z       "stages": {
2026-06-23T10:05:46.9416634Z         "doc": {
2026-06-23T10:05:46.9416728Z           "complete": false,
2026-06-23T10:05:46.9416820Z           "evidence": []
2026-06-23T10:05:46.9416900Z         },
2026-06-23T10:05:46.9416991Z         "impl": {
2026-06-23T10:05:46.9417087Z           "complete": true,
2026-06-23T10:05:46.9417173Z           "evidence": [
2026-06-23T10:05:46.9417258Z             {
2026-06-23T10:05:46.9417382Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.9417469Z               "line": 676
2026-06-23T10:05:46.9417554Z             },
2026-06-23T10:05:46.9417639Z             {
2026-06-23T10:05:46.9417750Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-23T10:05:46.9417840Z               "line": 27
2026-06-23T10:05:46.9417925Z             }
2026-06-23T10:05:46.9417997Z           ]
2026-06-23T10:05:46.9418089Z         },
2026-06-23T10:05:46.9418183Z         "int": {
2026-06-23T10:05:46.9418272Z           "complete": false,
2026-06-23T10:05:46.9418353Z           "evidence": []
2026-06-23T10:05:46.9418440Z         },
2026-06-23T10:05:46.9418526Z         "unit": {
2026-06-23T10:05:46.9418615Z           "complete": true,
2026-06-23T10:05:46.9418707Z           "evidence": [
2026-06-23T10:05:46.9418789Z             {
2026-06-23T10:05:46.9418912Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.9419094Z               "line": 1201
2026-06-23T10:05:46.9419179Z             },
2026-06-23T10:05:46.9419254Z             {
2026-06-23T10:05:46.9419370Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-23T10:05:46.9419460Z               "line": 181
2026-06-23T10:05:46.9419546Z             }
2026-06-23T10:05:46.9419632Z           ]
2026-06-23T10:05:46.9419709Z         }
2026-06-23T10:05:46.9419789Z       }
2026-06-23T10:05:46.9419870Z     },
2026-06-23T10:05:46.9419956Z     {
2026-06-23T10:05:46.9420081Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-23T10:05:46.9420232Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-23T10:05:46.9420334Z       "requiredStages": [
2026-06-23T10:05:46.9420423Z         "impl",
2026-06-23T10:05:46.9420503Z         "unit"
2026-06-23T10:05:46.9420593Z       ],
2026-06-23T10:05:46.9420679Z       "stages": {
2026-06-23T10:05:46.9420759Z         "doc": {
2026-06-23T10:05:46.9420854Z           "complete": false,
2026-06-23T10:05:46.9420949Z           "evidence": []
2026-06-23T10:05:46.9421031Z         },
2026-06-23T10:05:46.9421112Z         "impl": {
2026-06-23T10:05:46.9421216Z           "complete": true,
2026-06-23T10:05:46.9421292Z           "evidence": [
2026-06-23T10:05:46.9421378Z             {
2026-06-23T10:05:46.9421492Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9421584Z               "line": 73
2026-06-23T10:05:46.9421674Z             },
2026-06-23T10:05:46.9421760Z             {
2026-06-23T10:05:46.9421989Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9422079Z               "line": 972
2026-06-23T10:05:46.9422170Z             },
2026-06-23T10:05:46.9422251Z             {
2026-06-23T10:05:46.9422370Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-23T10:05:46.9422460Z               "line": 20
2026-06-23T10:05:46.9422543Z             },
2026-06-23T10:05:46.9422628Z             {
2026-06-23T10:05:46.9422742Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-23T10:05:46.9422823Z               "line": 100
2026-06-23T10:05:46.9422905Z             },
2026-06-23T10:05:46.9423090Z             {
2026-06-23T10:05:46.9423206Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:46.9423286Z               "line": 655
2026-06-23T10:05:46.9423370Z             },
2026-06-23T10:05:46.9423455Z             {
2026-06-23T10:05:46.9423571Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-23T10:05:46.9423654Z               "line": 68
2026-06-23T10:05:46.9423749Z             },
2026-06-23T10:05:46.9423826Z             {
2026-06-23T10:05:46.9423936Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-23T10:05:46.9424025Z               "line": 80
2026-06-23T10:05:46.9424102Z             }
2026-06-23T10:05:46.9424184Z           ]
2026-06-23T10:05:46.9424265Z         },
2026-06-23T10:05:46.9424345Z         "int": {
2026-06-23T10:05:46.9424431Z           "complete": true,
2026-06-23T10:05:46.9424513Z           "evidence": [
2026-06-23T10:05:46.9424599Z             {
2026-06-23T10:05:46.9424707Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-23T10:05:46.9424804Z               "line": 44
2026-06-23T10:05:46.9424884Z             }
2026-06-23T10:05:46.9424975Z           ]
2026-06-23T10:05:46.9425060Z         },
2026-06-23T10:05:46.9425138Z         "unit": {
2026-06-23T10:05:46.9425232Z           "complete": true,
2026-06-23T10:05:46.9425318Z           "evidence": [
2026-06-23T10:05:46.9425410Z             {
2026-06-23T10:05:46.9425528Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9425623Z               "line": 1181
2026-06-23T10:05:46.9425705Z             },
2026-06-23T10:05:46.9425792Z             {
2026-06-23T10:05:46.9425914Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:46.9426003Z               "line": 1197
2026-06-23T10:05:46.9426090Z             },
2026-06-23T10:05:46.9426174Z             {
2026-06-23T10:05:46.9426287Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9426378Z               "line": 2648
2026-06-23T10:05:46.9426460Z             },
2026-06-23T10:05:46.9426545Z             {
2026-06-23T10:05:46.9426654Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-23T10:05:46.9426742Z               "line": 152
2026-06-23T10:05:46.9426827Z             },
2026-06-23T10:05:46.9426912Z             {
2026-06-23T10:05:46.9427027Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-23T10:05:46.9427117Z               "line": 175
2026-06-23T10:05:46.9427203Z             },
2026-06-23T10:05:46.9427288Z             {
2026-06-23T10:05:46.9427409Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-23T10:05:46.9427499Z               "line": 186
2026-06-23T10:05:46.9427580Z             },
2026-06-23T10:05:46.9427666Z             {
2026-06-23T10:05:46.9427775Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-23T10:05:46.9427866Z               "line": 202
2026-06-23T10:05:46.9427937Z             },
2026-06-23T10:05:46.9428025Z             {
2026-06-23T10:05:46.9428142Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-23T10:05:46.9428228Z               "line": 216
2026-06-23T10:05:46.9428315Z             },
2026-06-23T10:05:46.9428400Z             {
2026-06-23T10:05:46.9428524Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-23T10:05:46.9428611Z               "line": 137
2026-06-23T10:05:46.9428692Z             },
2026-06-23T10:05:46.9428851Z             {
2026-06-23T10:05:46.9429024Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9429105Z               "line": 9546
2026-06-23T10:05:46.9429190Z             },
2026-06-23T10:05:46.9429277Z             {
2026-06-23T10:05:46.9429386Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-23T10:05:46.9429476Z               "line": 30
2026-06-23T10:05:46.9429558Z             },
2026-06-23T10:05:46.9429644Z             {
2026-06-23T10:05:46.9429758Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-23T10:05:46.9429843Z               "line": 73
2026-06-23T10:05:46.9430035Z             }
2026-06-23T10:05:46.9430120Z           ]
2026-06-23T10:05:46.9430201Z         }
2026-06-23T10:05:46.9430288Z       }
2026-06-23T10:05:46.9430368Z     },
2026-06-23T10:05:46.9430454Z     {
2026-06-23T10:05:46.9430574Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-23T10:05:46.9434506Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-23T10:05:46.9434643Z       "requiredStages": [
2026-06-23T10:05:46.9434725Z         "impl",
2026-06-23T10:05:46.9434815Z         "unit",
2026-06-23T10:05:46.9434900Z         "int"
2026-06-23T10:05:46.9434986Z       ],
2026-06-23T10:05:46.9435069Z       "stages": {
2026-06-23T10:05:46.9435159Z         "doc": {
2026-06-23T10:05:46.9435253Z           "complete": false,
2026-06-23T10:05:46.9435354Z           "evidence": []
2026-06-23T10:05:46.9435440Z         },
2026-06-23T10:05:46.9435526Z         "impl": {
2026-06-23T10:05:46.9435630Z           "complete": true,
2026-06-23T10:05:46.9435713Z           "evidence": [
2026-06-23T10:05:46.9435797Z             {
2026-06-23T10:05:46.9435921Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9436018Z               "line": 518
2026-06-23T10:05:46.9436093Z             },
2026-06-23T10:05:46.9436174Z             {
2026-06-23T10:05:46.9436299Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9436385Z               "line": 755
2026-06-23T10:05:46.9436474Z             }
2026-06-23T10:05:46.9436559Z           ]
2026-06-23T10:05:46.9436654Z         },
2026-06-23T10:05:46.9436744Z         "int": {
2026-06-23T10:05:46.9436833Z           "complete": true,
2026-06-23T10:05:46.9436924Z           "evidence": [
2026-06-23T10:05:46.9437010Z             {
2026-06-23T10:05:46.9437129Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9437209Z               "line": 1220
2026-06-23T10:05:46.9437302Z             },
2026-06-23T10:05:46.9437387Z             {
2026-06-23T10:05:46.9437515Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-23T10:05:46.9437597Z               "line": 312
2026-06-23T10:05:46.9437682Z             }
2026-06-23T10:05:46.9437868Z           ]
2026-06-23T10:05:46.9437950Z         },
2026-06-23T10:05:46.9438040Z         "unit": {
2026-06-23T10:05:46.9438130Z           "complete": true,
2026-06-23T10:05:46.9438221Z           "evidence": [
2026-06-23T10:05:46.9438307Z             {
2026-06-23T10:05:46.9438426Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9438517Z               "line": 872
2026-06-23T10:05:46.9438599Z             }
2026-06-23T10:05:46.9438692Z           ]
2026-06-23T10:05:46.9438779Z         }
2026-06-23T10:05:46.9438861Z       }
2026-06-23T10:05:46.9439041Z     },
2026-06-23T10:05:46.9439238Z     {
2026-06-23T10:05:46.9439345Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-23T10:05:46.9439589Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-23T10:05:46.9439693Z       "requiredStages": [
2026-06-23T10:05:46.9439779Z         "impl",
2026-06-23T10:05:46.9439866Z         "unit"
2026-06-23T10:05:46.9439951Z       ],
2026-06-23T10:05:46.9440041Z       "stages": {
2026-06-23T10:05:46.9440127Z         "doc": {
2026-06-23T10:05:46.9440214Z           "complete": true,
2026-06-23T10:05:46.9440309Z           "evidence": [
2026-06-23T10:05:46.9440398Z             {
2026-06-23T10:05:46.9440500Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9440595Z               "line": 133
2026-06-23T10:05:46.9440675Z             }
2026-06-23T10:05:46.9440757Z           ]
2026-06-23T10:05:46.9440843Z         },
2026-06-23T10:05:46.9440933Z         "impl": {
2026-06-23T10:05:46.9441028Z           "complete": true,
2026-06-23T10:05:46.9441116Z           "evidence": [
2026-06-23T10:05:46.9441201Z             {
2026-06-23T10:05:46.9441305Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T10:05:46.9441391Z               "line": 65
2026-06-23T10:05:46.9441473Z             },
2026-06-23T10:05:46.9441557Z             {
2026-06-23T10:05:46.9441681Z               "path": "crates/spt-proto/src/id.rs",
2026-06-23T10:05:46.9441772Z               "line": 17
2026-06-23T10:05:46.9441856Z             },
2026-06-23T10:05:46.9441941Z             {
2026-06-23T10:05:46.9442060Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T10:05:46.9442142Z               "line": 146
2026-06-23T10:05:46.9442236Z             },
2026-06-23T10:05:46.9442326Z             {
2026-06-23T10:05:46.9442442Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:46.9442541Z               "line": 310
2026-06-23T10:05:46.9442626Z             },
2026-06-23T10:05:46.9442709Z             {
2026-06-23T10:05:46.9442828Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:46.9442923Z               "line": 441
2026-06-23T10:05:46.9443004Z             },
2026-06-23T10:05:46.9443081Z             {
2026-06-23T10:05:46.9443199Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T10:05:46.9443285Z               "line": 32
2026-06-23T10:05:46.9443372Z             },
2026-06-23T10:05:46.9443462Z             {
2026-06-23T10:05:46.9446033Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9446172Z               "line": 1360
2026-06-23T10:05:46.9446258Z             },
2026-06-23T10:05:46.9446348Z             {
2026-06-23T10:05:46.9446457Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9446549Z               "line": 7226
2026-06-23T10:05:46.9446635Z             },
2026-06-23T10:05:46.9446719Z             {
2026-06-23T10:05:46.9446825Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9446912Z               "line": 7508
2026-06-23T10:05:46.9447001Z             }
2026-06-23T10:05:46.9447091Z           ]
2026-06-23T10:05:46.9447172Z         },
2026-06-23T10:05:46.9447258Z         "int": {
2026-06-23T10:05:46.9447355Z           "complete": false,
2026-06-23T10:05:46.9447455Z           "evidence": []
2026-06-23T10:05:46.9447537Z         },
2026-06-23T10:05:46.9447619Z         "unit": {
2026-06-23T10:05:46.9447703Z           "complete": true,
2026-06-23T10:05:46.9447932Z           "evidence": [
2026-06-23T10:05:46.9448013Z             {
2026-06-23T10:05:46.9448133Z               "path": "crates/spt-proto/src/id.rs",
2026-06-23T10:05:46.9448214Z               "line": 94
2026-06-23T10:05:46.9448295Z             },
2026-06-23T10:05:46.9448375Z             {
2026-06-23T10:05:46.9448481Z               "path": "crates/spt-proto/src/id.rs",
2026-06-23T10:05:46.9448571Z               "line": 111
2026-06-23T10:05:46.9448657Z             },
2026-06-23T10:05:46.9448743Z             {
2026-06-23T10:05:46.9448849Z               "path": "crates/spt-proto/src/id.rs",
2026-06-23T10:05:46.9449106Z               "line": 124
2026-06-23T10:05:46.9449187Z             },
2026-06-23T10:05:46.9449262Z             {
2026-06-23T10:05:46.9449368Z               "path": "crates/spt-proto/src/id.rs",
2026-06-23T10:05:46.9449455Z               "line": 134
2026-06-23T10:05:46.9449535Z             },
2026-06-23T10:05:46.9449616Z             {
2026-06-23T10:05:46.9449722Z               "path": "crates/spt-proto/src/id.rs",
2026-06-23T10:05:46.9449812Z               "line": 144
2026-06-23T10:05:46.9449887Z             },
2026-06-23T10:05:46.9449968Z             {
2026-06-23T10:05:46.9450077Z               "path": "crates/spt-proto/src/id.rs",
2026-06-23T10:05:46.9450164Z               "line": 156
2026-06-23T10:05:46.9450253Z             },
2026-06-23T10:05:46.9450334Z             {
2026-06-23T10:05:46.9450464Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:46.9450558Z               "line": 746
2026-06-23T10:05:46.9450639Z             },
2026-06-23T10:05:46.9450722Z             {
2026-06-23T10:05:46.9450850Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T10:05:46.9450940Z               "line": 309
2026-06-23T10:05:46.9451021Z             }
2026-06-23T10:05:46.9451112Z           ]
2026-06-23T10:05:46.9451193Z         }
2026-06-23T10:05:46.9451278Z       }
2026-06-23T10:05:46.9451366Z     },
2026-06-23T10:05:46.9451446Z     {
2026-06-23T10:05:46.9451565Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-23T10:05:46.9451695Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-23T10:05:46.9451798Z       "requiredStages": [
2026-06-23T10:05:46.9451879Z         "impl",
2026-06-23T10:05:46.9451966Z         "unit"
2026-06-23T10:05:46.9452052Z       ],
2026-06-23T10:05:46.9452132Z       "stages": {
2026-06-23T10:05:46.9452221Z         "doc": {
2026-06-23T10:05:46.9452302Z           "complete": false,
2026-06-23T10:05:46.9452388Z           "evidence": []
2026-06-23T10:05:46.9452472Z         },
2026-06-23T10:05:46.9452557Z         "impl": {
2026-06-23T10:05:46.9452659Z           "complete": true,
2026-06-23T10:05:46.9452745Z           "evidence": [
2026-06-23T10:05:46.9452830Z             {
2026-06-23T10:05:46.9452949Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T10:05:46.9453040Z               "line": 128
2026-06-23T10:05:46.9453111Z             }
2026-06-23T10:05:46.9453201Z           ]
2026-06-23T10:05:46.9453279Z         },
2026-06-23T10:05:46.9453364Z         "int": {
2026-06-23T10:05:46.9453464Z           "complete": false,
2026-06-23T10:05:46.9453540Z           "evidence": []
2026-06-23T10:05:46.9453627Z         },
2026-06-23T10:05:46.9453712Z         "unit": {
2026-06-23T10:05:46.9453807Z           "complete": true,
2026-06-23T10:05:46.9453898Z           "evidence": [
2026-06-23T10:05:46.9453979Z             {
2026-06-23T10:05:46.9454093Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T10:05:46.9454179Z               "line": 205
2026-06-23T10:05:46.9454261Z             }
2026-06-23T10:05:46.9454341Z           ]
2026-06-23T10:05:46.9454427Z         }
2026-06-23T10:05:46.9454514Z       }
2026-06-23T10:05:46.9454590Z     },
2026-06-23T10:05:46.9454675Z     {
2026-06-23T10:05:46.9454785Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-23T10:05:46.9454938Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-23T10:05:46.9455028Z       "requiredStages": [
2026-06-23T10:05:46.9455222Z         "impl",
2026-06-23T10:05:46.9455307Z         "unit"
2026-06-23T10:05:46.9455382Z       ],
2026-06-23T10:05:46.9455468Z       "stages": {
2026-06-23T10:05:46.9455549Z         "doc": {
2026-06-23T10:05:46.9455636Z           "complete": false,
2026-06-23T10:05:46.9455720Z           "evidence": []
2026-06-23T10:05:46.9455806Z         },
2026-06-23T10:05:46.9455893Z         "impl": {
2026-06-23T10:05:46.9455979Z           "complete": true,
2026-06-23T10:05:46.9456068Z           "evidence": [
2026-06-23T10:05:46.9456151Z             {
2026-06-23T10:05:46.9456260Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:46.9456445Z               "line": 367
2026-06-23T10:05:46.9456527Z             },
2026-06-23T10:05:46.9456612Z             {
2026-06-23T10:05:46.9456722Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:46.9456809Z               "line": 378
2026-06-23T10:05:46.9456889Z             },
2026-06-23T10:05:46.9456980Z             {
2026-06-23T10:05:46.9457090Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:46.9457186Z               "line": 396
2026-06-23T10:05:46.9457270Z             }
2026-06-23T10:05:46.9457351Z           ]
2026-06-23T10:05:46.9457439Z         },
2026-06-23T10:05:46.9457524Z         "int": {
2026-06-23T10:05:46.9457617Z           "complete": false,
2026-06-23T10:05:46.9457703Z           "evidence": []
2026-06-23T10:05:46.9457789Z         },
2026-06-23T10:05:46.9457878Z         "unit": {
2026-06-23T10:05:46.9457958Z           "complete": true,
2026-06-23T10:05:46.9458044Z           "evidence": [
2026-06-23T10:05:46.9458136Z             {
2026-06-23T10:05:46.9458240Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:46.9458330Z               "line": 420
2026-06-23T10:05:46.9458407Z             },
2026-06-23T10:05:46.9458497Z             {
2026-06-23T10:05:46.9458606Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:46.9458693Z               "line": 441
2026-06-23T10:05:46.9458779Z             },
2026-06-23T10:05:46.9458860Z             {
2026-06-23T10:05:46.9459032Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:46.9459113Z               "line": 811
2026-06-23T10:05:46.9459199Z             },
2026-06-23T10:05:46.9459279Z             {
2026-06-23T10:05:46.9459390Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:46.9459474Z               "line": 822
2026-06-23T10:05:46.9459560Z             },
2026-06-23T10:05:46.9459647Z             {
2026-06-23T10:05:46.9459761Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:46.9459852Z               "line": 835
2026-06-23T10:05:46.9459918Z             }
2026-06-23T10:05:46.9460010Z           ]
2026-06-23T10:05:46.9460090Z         }
2026-06-23T10:05:46.9460171Z       }
2026-06-23T10:05:46.9460253Z     },
2026-06-23T10:05:46.9460339Z     {
2026-06-23T10:05:46.9460461Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-23T10:05:46.9467746Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-23T10:05:46.9468084Z       "requiredStages": [
2026-06-23T10:05:46.9468173Z         "impl",
2026-06-23T10:05:46.9468258Z         "unit",
2026-06-23T10:05:46.9468344Z         "int"
2026-06-23T10:05:46.9468429Z       ],
2026-06-23T10:05:46.9468523Z       "stages": {
2026-06-23T10:05:46.9468604Z         "doc": {
2026-06-23T10:05:46.9468686Z           "complete": false,
2026-06-23T10:05:46.9468786Z           "evidence": []
2026-06-23T10:05:46.9468871Z         },
2026-06-23T10:05:46.9469039Z         "impl": {
2026-06-23T10:05:46.9469129Z           "complete": true,
2026-06-23T10:05:46.9469219Z           "evidence": [
2026-06-23T10:05:46.9469316Z             {
2026-06-23T10:05:46.9469444Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9469524Z               "line": 322
2026-06-23T10:05:46.9469616Z             },
2026-06-23T10:05:46.9469697Z             {
2026-06-23T10:05:46.9469815Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9469902Z               "line": 759
2026-06-23T10:05:46.9469992Z             },
2026-06-23T10:05:46.9470073Z             {
2026-06-23T10:05:46.9470188Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9470279Z               "line": 1098
2026-06-23T10:05:46.9470368Z             }
2026-06-23T10:05:46.9470454Z           ]
2026-06-23T10:05:46.9470537Z         },
2026-06-23T10:05:46.9470622Z         "int": {
2026-06-23T10:05:46.9470711Z           "complete": true,
2026-06-23T10:05:46.9470803Z           "evidence": [
2026-06-23T10:05:46.9470885Z             {
2026-06-23T10:05:46.9471035Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T10:05:46.9471121Z               "line": 343
2026-06-23T10:05:46.9471202Z             },
2026-06-23T10:05:46.9471284Z             {
2026-06-23T10:05:46.9471431Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T10:05:46.9471512Z               "line": 469
2026-06-23T10:05:46.9471593Z             }
2026-06-23T10:05:46.9471675Z           ]
2026-06-23T10:05:46.9471760Z         },
2026-06-23T10:05:46.9471837Z         "unit": {
2026-06-23T10:05:46.9471922Z           "complete": true,
2026-06-23T10:05:46.9472013Z           "evidence": [
2026-06-23T10:05:46.9472098Z             {
2026-06-23T10:05:46.9472218Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9472304Z               "line": 2775
2026-06-23T10:05:46.9472384Z             }
2026-06-23T10:05:46.9472467Z           ]
2026-06-23T10:05:46.9472552Z         }
2026-06-23T10:05:46.9472628Z       }
2026-06-23T10:05:46.9472713Z     },
2026-06-23T10:05:46.9472796Z     {
2026-06-23T10:05:46.9473043Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-23T10:05:46.9480190Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-23T10:05:46.9480428Z       "requiredStages": [
2026-06-23T10:05:46.9480520Z         "doc",
2026-06-23T10:05:46.9480619Z         "impl",
2026-06-23T10:05:46.9480709Z         "unit",
2026-06-23T10:05:46.9480787Z         "int"
2026-06-23T10:05:46.9480872Z       ],
2026-06-23T10:05:46.9480957Z       "stages": {
2026-06-23T10:05:46.9481033Z         "doc": {
2026-06-23T10:05:46.9481121Z           "complete": true,
2026-06-23T10:05:46.9481210Z           "evidence": [
2026-06-23T10:05:46.9481291Z             {
2026-06-23T10:05:46.9481412Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9481497Z               "line": 454
2026-06-23T10:05:46.9481586Z             }
2026-06-23T10:05:46.9481666Z           ]
2026-06-23T10:05:46.9481753Z         },
2026-06-23T10:05:46.9481839Z         "impl": {
2026-06-23T10:05:46.9481934Z           "complete": true,
2026-06-23T10:05:46.9482015Z           "evidence": [
2026-06-23T10:05:46.9482101Z             {
2026-06-23T10:05:46.9482225Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T10:05:46.9482315Z               "line": 355
2026-06-23T10:05:46.9482397Z             },
2026-06-23T10:05:46.9482487Z             {
2026-06-23T10:05:46.9482606Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9482682Z               "line": 493
2026-06-23T10:05:46.9482764Z             },
2026-06-23T10:05:46.9482854Z             {
2026-06-23T10:05:46.9482964Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9483046Z               "line": 1839
2026-06-23T10:05:46.9483231Z             },
2026-06-23T10:05:46.9483317Z             {
2026-06-23T10:05:46.9483427Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:46.9483521Z               "line": 383
2026-06-23T10:05:46.9483608Z             }
2026-06-23T10:05:46.9483685Z           ]
2026-06-23T10:05:46.9483775Z         },
2026-06-23T10:05:46.9483850Z         "int": {
2026-06-23T10:05:46.9483935Z           "complete": true,
2026-06-23T10:05:46.9484012Z           "evidence": [
2026-06-23T10:05:46.9484092Z             {
2026-06-23T10:05:46.9484215Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-23T10:05:46.9484373Z               "line": 745
2026-06-23T10:05:46.9484458Z             },
2026-06-23T10:05:46.9484543Z             {
2026-06-23T10:05:46.9484648Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-23T10:05:46.9484739Z               "line": 862
2026-06-23T10:05:46.9484829Z             },
2026-06-23T10:05:46.9484910Z             {
2026-06-23T10:05:46.9485059Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-23T10:05:46.9485139Z               "line": 268
2026-06-23T10:05:46.9485220Z             }
2026-06-23T10:05:46.9485303Z           ]
2026-06-23T10:05:46.9485373Z         },
2026-06-23T10:05:46.9485459Z         "unit": {
2026-06-23T10:05:46.9485554Z           "complete": true,
2026-06-23T10:05:46.9485632Z           "evidence": [
2026-06-23T10:05:46.9485726Z             {
2026-06-23T10:05:46.9485821Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:46.9485908Z               "line": 1082
2026-06-23T10:05:46.9485994Z             },
2026-06-23T10:05:46.9486084Z             {
2026-06-23T10:05:46.9486199Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:46.9486280Z               "line": 1116
2026-06-23T10:05:46.9486369Z             }
2026-06-23T10:05:46.9486456Z           ]
2026-06-23T10:05:46.9486538Z         }
2026-06-23T10:05:46.9486624Z       }
2026-06-23T10:05:46.9486708Z     },
2026-06-23T10:05:46.9486793Z     {
2026-06-23T10:05:46.9486903Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-23T10:05:46.9487453Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-23T10:05:46.9487545Z       "requiredStages": [
2026-06-23T10:05:46.9487626Z         "impl",
2026-06-23T10:05:46.9487706Z         "unit"
2026-06-23T10:05:46.9487792Z       ],
2026-06-23T10:05:46.9487879Z       "stages": {
2026-06-23T10:05:46.9487969Z         "doc": {
2026-06-23T10:05:46.9488078Z           "complete": false,
2026-06-23T10:05:46.9488165Z           "evidence": []
2026-06-23T10:05:46.9488250Z         },
2026-06-23T10:05:46.9488340Z         "impl": {
2026-06-23T10:05:46.9488436Z           "complete": true,
2026-06-23T10:05:46.9488518Z           "evidence": [
2026-06-23T10:05:46.9488607Z             {
2026-06-23T10:05:46.9488741Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.9488823Z               "line": 759
2026-06-23T10:05:46.9488908Z             }
2026-06-23T10:05:46.9489085Z           ]
2026-06-23T10:05:46.9489166Z         },
2026-06-23T10:05:46.9489251Z         "int": {
2026-06-23T10:05:46.9489336Z           "complete": false,
2026-06-23T10:05:46.9489421Z           "evidence": []
2026-06-23T10:05:46.9489498Z         },
2026-06-23T10:05:46.9489586Z         "unit": {
2026-06-23T10:05:46.9489676Z           "complete": true,
2026-06-23T10:05:46.9489758Z           "evidence": [
2026-06-23T10:05:46.9489845Z             {
2026-06-23T10:05:46.9489963Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.9490058Z               "line": 873
2026-06-23T10:05:46.9490140Z             }
2026-06-23T10:05:46.9490221Z           ]
2026-06-23T10:05:46.9490306Z         }
2026-06-23T10:05:46.9490378Z       }
2026-06-23T10:05:46.9490464Z     },
2026-06-23T10:05:46.9490644Z     {
2026-06-23T10:05:46.9490788Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-23T10:05:46.9493091Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-23T10:05:46.9493282Z       "requiredStages": [
2026-06-23T10:05:46.9493377Z         "impl",
2026-06-23T10:05:46.9493448Z         "unit",
2026-06-23T10:05:46.9493533Z         "int"
2026-06-23T10:05:46.9493615Z       ],
2026-06-23T10:05:46.9493696Z       "stages": {
2026-06-23T10:05:46.9493786Z         "doc": {
2026-06-23T10:05:46.9493868Z           "complete": false,
2026-06-23T10:05:46.9493954Z           "evidence": []
2026-06-23T10:05:46.9494039Z         },
2026-06-23T10:05:46.9494125Z         "impl": {
2026-06-23T10:05:46.9494226Z           "complete": true,
2026-06-23T10:05:46.9494316Z           "evidence": [
2026-06-23T10:05:46.9494400Z             {
2026-06-23T10:05:46.9494524Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9494615Z               "line": 756
2026-06-23T10:05:46.9494704Z             }
2026-06-23T10:05:46.9494779Z           ]
2026-06-23T10:05:46.9494866Z         },
2026-06-23T10:05:46.9494952Z         "int": {
2026-06-23T10:05:46.9495047Z           "complete": true,
2026-06-23T10:05:46.9495127Z           "evidence": [
2026-06-23T10:05:46.9495223Z             {
2026-06-23T10:05:46.9495366Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-23T10:05:46.9495442Z               "line": 24
2026-06-23T10:05:46.9495524Z             }
2026-06-23T10:05:46.9495609Z           ]
2026-06-23T10:05:46.9495690Z         },
2026-06-23T10:05:46.9495781Z         "unit": {
2026-06-23T10:05:46.9495867Z           "complete": true,
2026-06-23T10:05:46.9495962Z           "evidence": [
2026-06-23T10:05:46.9496047Z             {
2026-06-23T10:05:46.9496168Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9496267Z               "line": 969
2026-06-23T10:05:46.9496362Z             }
2026-06-23T10:05:46.9496444Z           ]
2026-06-23T10:05:46.9496535Z         }
2026-06-23T10:05:46.9496624Z       }
2026-06-23T10:05:46.9496710Z     },
2026-06-23T10:05:46.9496797Z     {
2026-06-23T10:05:46.9496915Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-23T10:05:46.9500509Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-23T10:05:46.9500733Z       "requiredStages": [
2026-06-23T10:05:46.9500814Z         "impl",
2026-06-23T10:05:46.9500899Z         "unit",
2026-06-23T10:05:46.9500982Z         "int"
2026-06-23T10:05:46.9501067Z       ],
2026-06-23T10:05:46.9501157Z       "stages": {
2026-06-23T10:05:46.9501239Z         "doc": {
2026-06-23T10:05:46.9501334Z           "complete": false,
2026-06-23T10:05:46.9501429Z           "evidence": []
2026-06-23T10:05:46.9501506Z         },
2026-06-23T10:05:46.9501701Z         "impl": {
2026-06-23T10:05:46.9501791Z           "complete": true,
2026-06-23T10:05:46.9501883Z           "evidence": [
2026-06-23T10:05:46.9501964Z             {
2026-06-23T10:05:46.9502092Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9502183Z               "line": 396
2026-06-23T10:05:46.9502265Z             },
2026-06-23T10:05:46.9502358Z             {
2026-06-23T10:05:46.9502469Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:46.9502566Z               "line": 343
2026-06-23T10:05:46.9502645Z             },
2026-06-23T10:05:46.9502725Z             {
2026-06-23T10:05:46.9502835Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9502921Z               "line": 2104
2026-06-23T10:05:46.9503007Z             },
2026-06-23T10:05:46.9503092Z             {
2026-06-23T10:05:46.9503202Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9503288Z               "line": 3846
2026-06-23T10:05:46.9503383Z             }
2026-06-23T10:05:46.9503474Z           ]
2026-06-23T10:05:46.9503560Z         },
2026-06-23T10:05:46.9503646Z         "int": {
2026-06-23T10:05:46.9503731Z           "complete": true,
2026-06-23T10:05:46.9503827Z           "evidence": [
2026-06-23T10:05:46.9503903Z             {
2026-06-23T10:05:46.9504041Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-23T10:05:46.9504132Z               "line": 353
2026-06-23T10:05:46.9504213Z             },
2026-06-23T10:05:46.9504298Z             {
2026-06-23T10:05:46.9504433Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-23T10:05:46.9504524Z               "line": 23
2026-06-23T10:05:46.9504599Z             }
2026-06-23T10:05:46.9504685Z           ]
2026-06-23T10:05:46.9504771Z         },
2026-06-23T10:05:46.9504853Z         "unit": {
2026-06-23T10:05:46.9504952Z           "complete": true,
2026-06-23T10:05:46.9505046Z           "evidence": [
2026-06-23T10:05:46.9505132Z             {
2026-06-23T10:05:46.9505250Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:46.9505330Z               "line": 743
2026-06-23T10:05:46.9505416Z             },
2026-06-23T10:05:46.9505493Z             {
2026-06-23T10:05:46.9505597Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9505687Z               "line": 9240
2026-06-23T10:05:46.9505778Z             }
2026-06-23T10:05:46.9505864Z           ]
2026-06-23T10:05:46.9505950Z         }
2026-06-23T10:05:46.9506026Z       }
2026-06-23T10:05:46.9506113Z     },
2026-06-23T10:05:46.9506203Z     {
2026-06-23T10:05:46.9506312Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-23T10:05:46.9509600Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-23T10:05:46.9509842Z       "requiredStages": [
2026-06-23T10:05:46.9509929Z         "impl",
2026-06-23T10:05:46.9510009Z         "unit",
2026-06-23T10:05:46.9510100Z         "int"
2026-06-23T10:05:46.9510278Z       ],
2026-06-23T10:05:46.9510366Z       "stages": {
2026-06-23T10:05:46.9510452Z         "doc": {
2026-06-23T10:05:46.9510551Z           "complete": false,
2026-06-23T10:05:46.9510637Z           "evidence": []
2026-06-23T10:05:46.9510711Z         },
2026-06-23T10:05:46.9510802Z         "impl": {
2026-06-23T10:05:46.9510883Z           "complete": true,
2026-06-23T10:05:46.9510984Z           "evidence": [
2026-06-23T10:05:46.9511064Z             {
2026-06-23T10:05:46.9511193Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9511279Z               "line": 64
2026-06-23T10:05:46.9511360Z             },
2026-06-23T10:05:46.9511445Z             {
2026-06-23T10:05:46.9511566Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9511656Z               "line": 78
2026-06-23T10:05:46.9511741Z             },
2026-06-23T10:05:46.9511818Z             {
2026-06-23T10:05:46.9511941Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9512036Z               "line": 170
2026-06-23T10:05:46.9512123Z             },
2026-06-23T10:05:46.9512205Z             {
2026-06-23T10:05:46.9512328Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9512413Z               "line": 185
2026-06-23T10:05:46.9512501Z             },
2026-06-23T10:05:46.9512580Z             {
2026-06-23T10:05:46.9512710Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9512801Z               "line": 195
2026-06-23T10:05:46.9512877Z             },
2026-06-23T10:05:46.9512962Z             {
2026-06-23T10:05:46.9513078Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9513173Z               "line": 205
2026-06-23T10:05:46.9513261Z             },
2026-06-23T10:05:46.9513347Z             {
2026-06-23T10:05:46.9513472Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9513558Z               "line": 299
2026-06-23T10:05:46.9513643Z             },
2026-06-23T10:05:46.9513729Z             {
2026-06-23T10:05:46.9513853Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9513933Z               "line": 313
2026-06-23T10:05:46.9514019Z             },
2026-06-23T10:05:46.9514106Z             {
2026-06-23T10:05:46.9514211Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9514310Z               "line": 382
2026-06-23T10:05:46.9514387Z             },
2026-06-23T10:05:46.9514482Z             {
2026-06-23T10:05:46.9514596Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9514683Z               "line": 442
2026-06-23T10:05:46.9514764Z             },
2026-06-23T10:05:46.9514845Z             {
2026-06-23T10:05:46.9514963Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9515060Z               "line": 460
2026-06-23T10:05:46.9515140Z             }
2026-06-23T10:05:46.9515226Z           ]
2026-06-23T10:05:46.9515307Z         },
2026-06-23T10:05:46.9515394Z         "int": {
2026-06-23T10:05:46.9515478Z           "complete": true,
2026-06-23T10:05:46.9515563Z           "evidence": [
2026-06-23T10:05:46.9515649Z             {
2026-06-23T10:05:46.9515782Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-23T10:05:46.9515876Z               "line": 45
2026-06-23T10:05:46.9515961Z             },
2026-06-23T10:05:46.9516133Z             {
2026-06-23T10:05:46.9516262Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-23T10:05:46.9516353Z               "line": 354
2026-06-23T10:05:46.9516439Z             },
2026-06-23T10:05:46.9516529Z             {
2026-06-23T10:05:46.9516678Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-23T10:05:46.9516768Z               "line": 31
2026-06-23T10:05:46.9516862Z             }
2026-06-23T10:05:46.9516945Z           ]
2026-06-23T10:05:46.9517035Z         },
2026-06-23T10:05:46.9517125Z         "unit": {
2026-06-23T10:05:46.9517216Z           "complete": true,
2026-06-23T10:05:46.9517397Z           "evidence": [
2026-06-23T10:05:46.9517483Z             {
2026-06-23T10:05:46.9517603Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9517683Z               "line": 778
2026-06-23T10:05:46.9517769Z             }
2026-06-23T10:05:46.9517850Z           ]
2026-06-23T10:05:46.9517932Z         }
2026-06-23T10:05:46.9518026Z       }
2026-06-23T10:05:46.9518108Z     },
2026-06-23T10:05:46.9518189Z     {
2026-06-23T10:05:46.9518299Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-23T10:05:46.9518521Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-23T10:05:46.9518612Z       "requiredStages": [
2026-06-23T10:05:46.9518686Z         "impl",
2026-06-23T10:05:46.9518771Z         "unit"
2026-06-23T10:05:46.9518853Z       ],
2026-06-23T10:05:46.9519029Z       "stages": {
2026-06-23T10:05:46.9519114Z         "doc": {
2026-06-23T10:05:46.9519201Z           "complete": false,
2026-06-23T10:05:46.9519296Z           "evidence": []
2026-06-23T10:05:46.9519382Z         },
2026-06-23T10:05:46.9519472Z         "impl": {
2026-06-23T10:05:46.9519554Z           "complete": true,
2026-06-23T10:05:46.9519650Z           "evidence": [
2026-06-23T10:05:46.9519734Z             {
2026-06-23T10:05:46.9519840Z               "path": "crates/spt/src/api/auth.rs",
2026-06-23T10:05:46.9519926Z               "line": 14
2026-06-23T10:05:46.9520016Z             },
2026-06-23T10:05:46.9520097Z             {
2026-06-23T10:05:46.9520203Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T10:05:46.9520297Z               "line": 566
2026-06-23T10:05:46.9520378Z             }
2026-06-23T10:05:46.9520466Z           ]
2026-06-23T10:05:46.9520551Z         },
2026-06-23T10:05:46.9520635Z         "int": {
2026-06-23T10:05:46.9520737Z           "complete": false,
2026-06-23T10:05:46.9520833Z           "evidence": []
2026-06-23T10:05:46.9520917Z         },
2026-06-23T10:05:46.9521007Z         "unit": {
2026-06-23T10:05:46.9521107Z           "complete": true,
2026-06-23T10:05:46.9521207Z           "evidence": [
2026-06-23T10:05:46.9521281Z             {
2026-06-23T10:05:46.9521385Z               "path": "crates/spt/src/api/auth.rs",
2026-06-23T10:05:46.9521472Z               "line": 130
2026-06-23T10:05:46.9521554Z             },
2026-06-23T10:05:46.9521629Z             {
2026-06-23T10:05:46.9521739Z               "path": "crates/spt/src/api/auth.rs",
2026-06-23T10:05:46.9521830Z               "line": 138
2026-06-23T10:05:46.9521902Z             },
2026-06-23T10:05:46.9521991Z             {
2026-06-23T10:05:46.9522102Z               "path": "crates/spt/src/api/auth.rs",
2026-06-23T10:05:46.9522187Z               "line": 146
2026-06-23T10:05:46.9522263Z             },
2026-06-23T10:05:46.9522349Z             {
2026-06-23T10:05:46.9522464Z               "path": "crates/spt/src/api/auth.rs",
2026-06-23T10:05:46.9522550Z               "line": 154
2026-06-23T10:05:46.9522635Z             },
2026-06-23T10:05:46.9522717Z             {
2026-06-23T10:05:46.9522830Z               "path": "crates/spt/src/api/auth.rs",
2026-06-23T10:05:46.9522916Z               "line": 162
2026-06-23T10:05:46.9523003Z             },
2026-06-23T10:05:46.9523094Z             {
2026-06-23T10:05:46.9523198Z               "path": "crates/spt/src/api/auth.rs",
2026-06-23T10:05:46.9523279Z               "line": 170
2026-06-23T10:05:46.9523356Z             }
2026-06-23T10:05:46.9523537Z           ]
2026-06-23T10:05:46.9523618Z         }
2026-06-23T10:05:46.9523700Z       }
2026-06-23T10:05:46.9523784Z     },
2026-06-23T10:05:46.9523865Z     {
2026-06-23T10:05:46.9523979Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-23T10:05:46.9524842Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-23T10:05:46.9524938Z       "requiredStages": [
2026-06-23T10:05:46.9525137Z         "impl",
2026-06-23T10:05:46.9525218Z         "unit"
2026-06-23T10:05:46.9525306Z       ],
2026-06-23T10:05:46.9525390Z       "stages": {
2026-06-23T10:05:46.9525476Z         "doc": {
2026-06-23T10:05:46.9525572Z           "complete": false,
2026-06-23T10:05:46.9525667Z           "evidence": []
2026-06-23T10:05:46.9525748Z         },
2026-06-23T10:05:46.9525839Z         "impl": {
2026-06-23T10:05:46.9525936Z           "complete": true,
2026-06-23T10:05:46.9526024Z           "evidence": [
2026-06-23T10:05:46.9526119Z             {
2026-06-23T10:05:46.9526257Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-23T10:05:46.9526351Z               "line": 34
2026-06-23T10:05:46.9526441Z             }
2026-06-23T10:05:46.9526517Z           ]
2026-06-23T10:05:46.9526603Z         },
2026-06-23T10:05:46.9526680Z         "int": {
2026-06-23T10:05:46.9526779Z           "complete": false,
2026-06-23T10:05:46.9526865Z           "evidence": []
2026-06-23T10:05:46.9526961Z         },
2026-06-23T10:05:46.9527056Z         "unit": {
2026-06-23T10:05:46.9527141Z           "complete": true,
2026-06-23T10:05:46.9527228Z           "evidence": [
2026-06-23T10:05:46.9527314Z             {
2026-06-23T10:05:46.9527441Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-23T10:05:46.9527534Z               "line": 188
2026-06-23T10:05:46.9527624Z             },
2026-06-23T10:05:46.9527704Z             {
2026-06-23T10:05:46.9527839Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-23T10:05:46.9527924Z               "line": 200
2026-06-23T10:05:46.9528009Z             },
2026-06-23T10:05:46.9528100Z             {
2026-06-23T10:05:46.9528229Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-23T10:05:46.9528314Z               "line": 211
2026-06-23T10:05:46.9528405Z             },
2026-06-23T10:05:46.9528493Z             {
2026-06-23T10:05:46.9528624Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-23T10:05:46.9528715Z               "line": 253
2026-06-23T10:05:46.9528798Z             },
2026-06-23T10:05:46.9528883Z             {
2026-06-23T10:05:46.9529100Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-23T10:05:46.9529190Z               "line": 277
2026-06-23T10:05:46.9529275Z             },
2026-06-23T10:05:46.9529355Z             {
2026-06-23T10:05:46.9529490Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-23T10:05:46.9529585Z               "line": 300
2026-06-23T10:05:46.9529660Z             },
2026-06-23T10:05:46.9529747Z             {
2026-06-23T10:05:46.9529890Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-23T10:05:46.9529975Z               "line": 316
2026-06-23T10:05:46.9530062Z             }
2026-06-23T10:05:46.9530143Z           ]
2026-06-23T10:05:46.9530229Z         }
2026-06-23T10:05:46.9530308Z       }
2026-06-23T10:05:46.9530396Z     },
2026-06-23T10:05:46.9530481Z     {
2026-06-23T10:05:46.9530595Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-23T10:05:46.9531111Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-23T10:05:46.9531195Z       "requiredStages": [
2026-06-23T10:05:46.9531388Z         "impl",
2026-06-23T10:05:46.9531478Z         "unit"
2026-06-23T10:05:46.9531562Z       ],
2026-06-23T10:05:46.9531648Z       "stages": {
2026-06-23T10:05:46.9531729Z         "doc": {
2026-06-23T10:05:46.9531827Z           "complete": false,
2026-06-23T10:05:46.9531912Z           "evidence": []
2026-06-23T10:05:46.9531989Z         },
2026-06-23T10:05:46.9532071Z         "impl": {
2026-06-23T10:05:46.9532161Z           "complete": true,
2026-06-23T10:05:46.9532246Z           "evidence": [
2026-06-23T10:05:46.9532333Z             {
2026-06-23T10:05:46.9532457Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:46.9532662Z               "line": 29
2026-06-23T10:05:46.9535288Z             },
2026-06-23T10:05:46.9535397Z             {
2026-06-23T10:05:46.9535527Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:46.9535612Z               "line": 174
2026-06-23T10:05:46.9535697Z             },
2026-06-23T10:05:46.9535788Z             {
2026-06-23T10:05:46.9535917Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:46.9536003Z               "line": 194
2026-06-23T10:05:46.9536089Z             },
2026-06-23T10:05:46.9536171Z             {
2026-06-23T10:05:46.9536293Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:46.9536384Z               "line": 222
2026-06-23T10:05:46.9536471Z             }
2026-06-23T10:05:46.9536557Z           ]
2026-06-23T10:05:46.9536641Z         },
2026-06-23T10:05:46.9536731Z         "int": {
2026-06-23T10:05:46.9536822Z           "complete": false,
2026-06-23T10:05:46.9536916Z           "evidence": []
2026-06-23T10:05:46.9537006Z         },
2026-06-23T10:05:46.9537092Z         "unit": {
2026-06-23T10:05:46.9537178Z           "complete": true,
2026-06-23T10:05:46.9537268Z           "evidence": [
2026-06-23T10:05:46.9537344Z             {
2026-06-23T10:05:46.9537464Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:46.9537550Z               "line": 329
2026-06-23T10:05:46.9537635Z             },
2026-06-23T10:05:46.9537721Z             {
2026-06-23T10:05:46.9537831Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:46.9537911Z               "line": 344
2026-06-23T10:05:46.9537997Z             },
2026-06-23T10:05:46.9538080Z             {
2026-06-23T10:05:46.9538193Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:46.9538274Z               "line": 417
2026-06-23T10:05:46.9538360Z             },
2026-06-23T10:05:46.9538442Z             {
2026-06-23T10:05:46.9538551Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:46.9538650Z               "line": 433
2026-06-23T10:05:46.9538733Z             },
2026-06-23T10:05:46.9538817Z             {
2026-06-23T10:05:46.9538918Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:46.9539104Z               "line": 492
2026-06-23T10:05:46.9539189Z             },
2026-06-23T10:05:46.9539271Z             {
2026-06-23T10:05:46.9539387Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:46.9539466Z               "line": 506
2026-06-23T10:05:46.9539551Z             },
2026-06-23T10:05:46.9539632Z             {
2026-06-23T10:05:46.9539741Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:46.9539830Z               "line": 517
2026-06-23T10:05:46.9539910Z             },
2026-06-23T10:05:46.9539992Z             {
2026-06-23T10:05:46.9540102Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:46.9540187Z               "line": 528
2026-06-23T10:05:46.9540259Z             }
2026-06-23T10:05:46.9540350Z           ]
2026-06-23T10:05:46.9540436Z         }
2026-06-23T10:05:46.9540521Z       }
2026-06-23T10:05:46.9540598Z     },
2026-06-23T10:05:46.9540684Z     {
2026-06-23T10:05:46.9540807Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-23T10:05:46.9541489Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-23T10:05:46.9541742Z       "requiredStages": [
2026-06-23T10:05:46.9541828Z         "impl",
2026-06-23T10:05:46.9541910Z         "unit"
2026-06-23T10:05:46.9542000Z       ],
2026-06-23T10:05:46.9542071Z       "stages": {
2026-06-23T10:05:46.9542155Z         "doc": {
2026-06-23T10:05:46.9542242Z           "complete": false,
2026-06-23T10:05:46.9542327Z           "evidence": []
2026-06-23T10:05:46.9542411Z         },
2026-06-23T10:05:46.9542492Z         "impl": {
2026-06-23T10:05:46.9542578Z           "complete": true,
2026-06-23T10:05:46.9542777Z           "evidence": [
2026-06-23T10:05:46.9542864Z             {
2026-06-23T10:05:46.9542993Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T10:05:46.9543087Z               "line": 27
2026-06-23T10:05:46.9543169Z             },
2026-06-23T10:05:46.9543246Z             {
2026-06-23T10:05:46.9543374Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T10:05:46.9543470Z               "line": 110
2026-06-23T10:05:46.9543556Z             },
2026-06-23T10:05:46.9543636Z             {
2026-06-23T10:05:46.9543765Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T10:05:46.9543866Z               "line": 153
2026-06-23T10:05:46.9543947Z             },
2026-06-23T10:05:46.9544032Z             {
2026-06-23T10:05:46.9544157Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T10:05:46.9544238Z               "line": 182
2026-06-23T10:05:46.9544318Z             },
2026-06-23T10:05:46.9544409Z             {
2026-06-23T10:05:46.9544553Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T10:05:46.9544642Z               "line": 31
2026-06-23T10:05:46.9544724Z             },
2026-06-23T10:05:46.9544806Z             {
2026-06-23T10:05:46.9544942Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T10:05:46.9545032Z               "line": 113
2026-06-23T10:05:46.9545114Z             },
2026-06-23T10:05:46.9545200Z             {
2026-06-23T10:05:46.9545328Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T10:05:46.9545414Z               "line": 138
2026-06-23T10:05:46.9545491Z             }
2026-06-23T10:05:46.9545572Z           ]
2026-06-23T10:05:46.9545661Z         },
2026-06-23T10:05:46.9545744Z         "int": {
2026-06-23T10:05:46.9545834Z           "complete": false,
2026-06-23T10:05:46.9545915Z           "evidence": []
2026-06-23T10:05:46.9546000Z         },
2026-06-23T10:05:46.9546087Z         "unit": {
2026-06-23T10:05:46.9546186Z           "complete": true,
2026-06-23T10:05:46.9546281Z           "evidence": [
2026-06-23T10:05:46.9546363Z             {
2026-06-23T10:05:46.9546496Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T10:05:46.9546582Z               "line": 261
2026-06-23T10:05:46.9546673Z             },
2026-06-23T10:05:46.9546755Z             {
2026-06-23T10:05:46.9546882Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T10:05:46.9546964Z               "line": 276
2026-06-23T10:05:46.9547031Z             },
2026-06-23T10:05:46.9547117Z             {
2026-06-23T10:05:46.9547239Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T10:05:46.9547325Z               "line": 293
2026-06-23T10:05:46.9547406Z             },
2026-06-23T10:05:46.9547490Z             {
2026-06-23T10:05:46.9547617Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T10:05:46.9547704Z               "line": 310
2026-06-23T10:05:46.9547791Z             },
2026-06-23T10:05:46.9547875Z             {
2026-06-23T10:05:46.9548024Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T10:05:46.9548134Z               "line": 327
2026-06-23T10:05:46.9548224Z             },
2026-06-23T10:05:46.9548305Z             {
2026-06-23T10:05:46.9548439Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T10:05:46.9548620Z               "line": 366
2026-06-23T10:05:46.9548710Z             },
2026-06-23T10:05:46.9548787Z             {
2026-06-23T10:05:46.9549116Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T10:05:46.9549211Z               "line": 179
2026-06-23T10:05:46.9549308Z             },
2026-06-23T10:05:46.9549397Z             {
2026-06-23T10:05:46.9549540Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T10:05:46.9549632Z               "line": 194
2026-06-23T10:05:46.9549720Z             },
2026-06-23T10:05:46.9549802Z             {
2026-06-23T10:05:46.9550049Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T10:05:46.9550139Z               "line": 204
2026-06-23T10:05:46.9550225Z             },
2026-06-23T10:05:46.9550315Z             {
2026-06-23T10:05:46.9550447Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T10:05:46.9550538Z               "line": 259
2026-06-23T10:05:46.9550629Z             },
2026-06-23T10:05:46.9550714Z             {
2026-06-23T10:05:46.9550848Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T10:05:46.9550944Z               "line": 269
2026-06-23T10:05:46.9551020Z             },
2026-06-23T10:05:46.9551110Z             {
2026-06-23T10:05:46.9551254Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T10:05:46.9551339Z               "line": 283
2026-06-23T10:05:46.9551429Z             }
2026-06-23T10:05:46.9551511Z           ]
2026-06-23T10:05:46.9551597Z         }
2026-06-23T10:05:46.9551682Z       }
2026-06-23T10:05:46.9551763Z     },
2026-06-23T10:05:46.9551855Z     {
2026-06-23T10:05:46.9551968Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-23T10:05:46.9552156Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-23T10:05:46.9552269Z       "requiredStages": [],
2026-06-23T10:05:46.9552355Z       "stages": {
2026-06-23T10:05:46.9552446Z         "doc": {
2026-06-23T10:05:46.9552532Z           "complete": false,
2026-06-23T10:05:46.9552626Z           "evidence": []
2026-06-23T10:05:46.9552701Z         },
2026-06-23T10:05:46.9552782Z         "impl": {
2026-06-23T10:05:46.9552882Z           "complete": false,
2026-06-23T10:05:46.9552952Z           "evidence": []
2026-06-23T10:05:46.9553037Z         },
2026-06-23T10:05:46.9553119Z         "int": {
2026-06-23T10:05:46.9553210Z           "complete": false,
2026-06-23T10:05:46.9553300Z           "evidence": []
2026-06-23T10:05:46.9553386Z         },
2026-06-23T10:05:46.9553477Z         "unit": {
2026-06-23T10:05:46.9553573Z           "complete": false,
2026-06-23T10:05:46.9553662Z           "evidence": []
2026-06-23T10:05:46.9553744Z         }
2026-06-23T10:05:46.9553830Z       }
2026-06-23T10:05:46.9553920Z     },
2026-06-23T10:05:46.9553995Z     {
2026-06-23T10:05:46.9554126Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-23T10:05:46.9554921Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-23T10:05:46.9555028Z       "requiredStages": [
2026-06-23T10:05:46.9555113Z         "impl",
2026-06-23T10:05:46.9555193Z         "unit"
2026-06-23T10:05:46.9555279Z       ],
2026-06-23T10:05:46.9555362Z       "stages": {
2026-06-23T10:05:46.9555456Z         "doc": {
2026-06-23T10:05:46.9555545Z           "complete": false,
2026-06-23T10:05:46.9555640Z           "evidence": []
2026-06-23T10:05:46.9555732Z         },
2026-06-23T10:05:46.9555817Z         "impl": {
2026-06-23T10:05:46.9555907Z           "complete": true,
2026-06-23T10:05:46.9555994Z           "evidence": [
2026-06-23T10:05:46.9556084Z             {
2026-06-23T10:05:46.9556212Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T10:05:46.9556304Z               "line": 26
2026-06-23T10:05:46.9556390Z             },
2026-06-23T10:05:46.9556589Z             {
2026-06-23T10:05:46.9556719Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T10:05:46.9556809Z               "line": 95
2026-06-23T10:05:46.9556899Z             },
2026-06-23T10:05:46.9556981Z             {
2026-06-23T10:05:46.9557104Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T10:05:46.9557204Z               "line": 166
2026-06-23T10:05:46.9557291Z             },
2026-06-23T10:05:46.9557376Z             {
2026-06-23T10:05:46.9557495Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-23T10:05:46.9557658Z               "line": 19
2026-06-23T10:05:46.9557742Z             },
2026-06-23T10:05:46.9557823Z             {
2026-06-23T10:05:46.9557942Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-23T10:05:46.9558032Z               "line": 50
2026-06-23T10:05:46.9558116Z             },
2026-06-23T10:05:46.9558202Z             {
2026-06-23T10:05:46.9558312Z               "path": "crates/spt-live/src/turn.rs",
2026-06-23T10:05:46.9558402Z               "line": 18
2026-06-23T10:05:46.9558488Z             },
2026-06-23T10:05:46.9558569Z             {
2026-06-23T10:05:46.9558680Z               "path": "crates/spt-live/src/turn.rs",
2026-06-23T10:05:46.9558764Z               "line": 71
2026-06-23T10:05:46.9558841Z             },
2026-06-23T10:05:46.9558914Z             {
2026-06-23T10:05:46.9559103Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:46.9559185Z               "line": 87
2026-06-23T10:05:46.9559275Z             }
2026-06-23T10:05:46.9559361Z           ]
2026-06-23T10:05:46.9559461Z         },
2026-06-23T10:05:46.9559543Z         "int": {
2026-06-23T10:05:46.9559637Z           "complete": false,
2026-06-23T10:05:46.9559733Z           "evidence": []
2026-06-23T10:05:46.9559815Z         },
2026-06-23T10:05:46.9559892Z         "unit": {
2026-06-23T10:05:46.9559985Z           "complete": true,
2026-06-23T10:05:46.9560076Z           "evidence": [
2026-06-23T10:05:46.9560144Z             {
2026-06-23T10:05:46.9560262Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T10:05:46.9560357Z               "line": 289
2026-06-23T10:05:46.9560445Z             },
2026-06-23T10:05:46.9560531Z             {
2026-06-23T10:05:46.9560638Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T10:05:46.9560732Z               "line": 314
2026-06-23T10:05:46.9560814Z             },
2026-06-23T10:05:46.9560913Z             {
2026-06-23T10:05:46.9561036Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T10:05:46.9561117Z               "line": 350
2026-06-23T10:05:46.9561204Z             },
2026-06-23T10:05:46.9561284Z             {
2026-06-23T10:05:46.9561403Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T10:05:46.9561485Z               "line": 418
2026-06-23T10:05:46.9561566Z             },
2026-06-23T10:05:46.9561651Z             {
2026-06-23T10:05:46.9561762Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T10:05:46.9561852Z               "line": 429
2026-06-23T10:05:46.9561941Z             },
2026-06-23T10:05:46.9562028Z             {
2026-06-23T10:05:46.9562138Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T10:05:46.9562228Z               "line": 460
2026-06-23T10:05:46.9562319Z             },
2026-06-23T10:05:46.9562401Z             {
2026-06-23T10:05:46.9562514Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T10:05:46.9562590Z               "line": 471
2026-06-23T10:05:46.9562677Z             },
2026-06-23T10:05:46.9562759Z             {
2026-06-23T10:05:46.9562886Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-23T10:05:46.9562982Z               "line": 77
2026-06-23T10:05:46.9563059Z             },
2026-06-23T10:05:46.9563144Z             {
2026-06-23T10:05:46.9563261Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-23T10:05:46.9563347Z               "line": 97
2026-06-23T10:05:46.9563433Z             },
2026-06-23T10:05:46.9563626Z             {
2026-06-23T10:05:46.9563737Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-23T10:05:46.9563827Z               "line": 112
2026-06-23T10:05:46.9563903Z             },
2026-06-23T10:05:46.9563984Z             {
2026-06-23T10:05:46.9564104Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-23T10:05:46.9564184Z               "line": 123
2026-06-23T10:05:46.9564275Z             },
2026-06-23T10:05:46.9564361Z             {
2026-06-23T10:05:46.9564466Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-23T10:05:46.9564556Z               "line": 130
2026-06-23T10:05:46.9564757Z             },
2026-06-23T10:05:46.9564842Z             {
2026-06-23T10:05:46.9564948Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-23T10:05:46.9565043Z               "line": 145
2026-06-23T10:05:46.9565129Z             },
2026-06-23T10:05:46.9565209Z             {
2026-06-23T10:05:46.9565325Z               "path": "crates/spt-live/src/turn.rs",
2026-06-23T10:05:46.9565419Z               "line": 115
2026-06-23T10:05:46.9565510Z             },
2026-06-23T10:05:46.9565592Z             {
2026-06-23T10:05:46.9565696Z               "path": "crates/spt-live/src/turn.rs",
2026-06-23T10:05:46.9565796Z               "line": 130
2026-06-23T10:05:46.9565878Z             },
2026-06-23T10:05:46.9565969Z             {
2026-06-23T10:05:46.9566086Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:46.9566171Z               "line": 428
2026-06-23T10:05:46.9566258Z             }
2026-06-23T10:05:46.9566340Z           ]
2026-06-23T10:05:46.9566434Z         }
2026-06-23T10:05:46.9566520Z       }
2026-06-23T10:05:46.9566597Z     },
2026-06-23T10:05:46.9566678Z     {
2026-06-23T10:05:46.9566801Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-23T10:05:46.9572884Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-23T10:05:46.9573027Z       "requiredStages": [
2026-06-23T10:05:46.9573222Z         "impl",
2026-06-23T10:05:46.9573304Z         "unit",
2026-06-23T10:05:46.9573389Z         "int"
2026-06-23T10:05:46.9573470Z       ],
2026-06-23T10:05:46.9573567Z       "stages": {
2026-06-23T10:05:46.9573657Z         "doc": {
2026-06-23T10:05:46.9573756Z           "complete": false,
2026-06-23T10:05:46.9573855Z           "evidence": []
2026-06-23T10:05:46.9573936Z         },
2026-06-23T10:05:46.9574030Z         "impl": {
2026-06-23T10:05:46.9574111Z           "complete": true,
2026-06-23T10:05:46.9574206Z           "evidence": [
2026-06-23T10:05:46.9574292Z             {
2026-06-23T10:05:46.9574420Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9574621Z               "line": 952
2026-06-23T10:05:46.9574707Z             },
2026-06-23T10:05:46.9574797Z             {
2026-06-23T10:05:46.9574912Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:46.9574998Z               "line": 322
2026-06-23T10:05:46.9575088Z             }
2026-06-23T10:05:46.9575169Z           ]
2026-06-23T10:05:46.9575255Z         },
2026-06-23T10:05:46.9575341Z         "int": {
2026-06-23T10:05:46.9575440Z           "complete": true,
2026-06-23T10:05:46.9575528Z           "evidence": [
2026-06-23T10:05:46.9575617Z             {
2026-06-23T10:05:46.9575774Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T10:05:46.9575867Z               "line": 2150
2026-06-23T10:05:46.9575946Z             }
2026-06-23T10:05:46.9576032Z           ]
2026-06-23T10:05:46.9576119Z         },
2026-06-23T10:05:46.9576200Z         "unit": {
2026-06-23T10:05:46.9576303Z           "complete": true,
2026-06-23T10:05:46.9576409Z           "evidence": [
2026-06-23T10:05:46.9576496Z             {
2026-06-23T10:05:46.9576622Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9576712Z               "line": 2819
2026-06-23T10:05:46.9576809Z             },
2026-06-23T10:05:46.9576895Z             {
2026-06-23T10:05:46.9577022Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9577123Z               "line": 2883
2026-06-23T10:05:46.9577209Z             },
2026-06-23T10:05:46.9577299Z             {
2026-06-23T10:05:46.9577419Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9577519Z               "line": 2938
2026-06-23T10:05:46.9577605Z             }
2026-06-23T10:05:46.9577695Z           ]
2026-06-23T10:05:46.9577786Z         }
2026-06-23T10:05:46.9577863Z       }
2026-06-23T10:05:46.9577952Z     },
2026-06-23T10:05:46.9578029Z     {
2026-06-23T10:05:46.9578149Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-23T10:05:46.9579024Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-23T10:05:46.9579129Z       "requiredStages": [
2026-06-23T10:05:46.9579218Z         "doc",
2026-06-23T10:05:46.9579308Z         "impl",
2026-06-23T10:05:46.9579389Z         "unit"
2026-06-23T10:05:46.9579472Z       ],
2026-06-23T10:05:46.9579560Z       "stages": {
2026-06-23T10:05:46.9579646Z         "doc": {
2026-06-23T10:05:46.9579734Z           "complete": true,
2026-06-23T10:05:46.9579823Z           "evidence": [
2026-06-23T10:05:46.9579904Z             {
2026-06-23T10:05:46.9580010Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9580100Z               "line": 374
2026-06-23T10:05:46.9580186Z             }
2026-06-23T10:05:46.9580276Z           ]
2026-06-23T10:05:46.9580358Z         },
2026-06-23T10:05:46.9580448Z         "impl": {
2026-06-23T10:05:46.9580533Z           "complete": true,
2026-06-23T10:05:46.9580630Z           "evidence": [
2026-06-23T10:05:46.9580706Z             {
2026-06-23T10:05:46.9580825Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9580920Z               "line": 206
2026-06-23T10:05:46.9581007Z             },
2026-06-23T10:05:46.9581191Z             {
2026-06-23T10:05:46.9581307Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9581392Z               "line": 310
2026-06-23T10:05:46.9581473Z             },
2026-06-23T10:05:46.9581560Z             {
2026-06-23T10:05:46.9581679Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9581758Z               "line": 568
2026-06-23T10:05:46.9581858Z             },
2026-06-23T10:05:46.9581939Z             {
2026-06-23T10:05:46.9582052Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9582137Z               "line": 583
2026-06-23T10:05:46.9582324Z             },
2026-06-23T10:05:46.9582404Z             {
2026-06-23T10:05:46.9582523Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9582620Z               "line": 1346
2026-06-23T10:05:46.9582701Z             },
2026-06-23T10:05:46.9582785Z             {
2026-06-23T10:05:46.9582906Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.9583011Z               "line": 443
2026-06-23T10:05:46.9583100Z             },
2026-06-23T10:05:46.9583182Z             {
2026-06-23T10:05:46.9583310Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.9583396Z               "line": 590
2026-06-23T10:05:46.9583482Z             },
2026-06-23T10:05:46.9583555Z             {
2026-06-23T10:05:46.9583667Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.9583754Z               "line": 731
2026-06-23T10:05:46.9583836Z             }
2026-06-23T10:05:46.9583917Z           ]
2026-06-23T10:05:46.9584011Z         },
2026-06-23T10:05:46.9584102Z         "int": {
2026-06-23T10:05:46.9584189Z           "complete": false,
2026-06-23T10:05:46.9584278Z           "evidence": []
2026-06-23T10:05:46.9584368Z         },
2026-06-23T10:05:46.9584454Z         "unit": {
2026-06-23T10:05:46.9584544Z           "complete": true,
2026-06-23T10:05:46.9584632Z           "evidence": [
2026-06-23T10:05:46.9584741Z             {
2026-06-23T10:05:46.9584862Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.9584947Z               "line": 1155
2026-06-23T10:05:46.9585028Z             },
2026-06-23T10:05:46.9585105Z             {
2026-06-23T10:05:46.9585244Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-23T10:05:46.9585328Z               "line": 30
2026-06-23T10:05:46.9585420Z             }
2026-06-23T10:05:46.9585505Z           ]
2026-06-23T10:05:46.9585582Z         }
2026-06-23T10:05:46.9585672Z       }
2026-06-23T10:05:46.9585754Z     },
2026-06-23T10:05:46.9585839Z     {
2026-06-23T10:05:46.9585948Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-23T10:05:46.9589233Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-23T10:05:46.9589352Z       "requiredStages": [
2026-06-23T10:05:46.9589438Z         "impl",
2026-06-23T10:05:46.9589527Z         "unit",
2026-06-23T10:05:46.9589614Z         "int"
2026-06-23T10:05:46.9589698Z       ],
2026-06-23T10:05:46.9589897Z       "stages": {
2026-06-23T10:05:46.9589984Z         "doc": {
2026-06-23T10:05:46.9590078Z           "complete": false,
2026-06-23T10:05:46.9590173Z           "evidence": []
2026-06-23T10:05:46.9590250Z         },
2026-06-23T10:05:46.9590341Z         "impl": {
2026-06-23T10:05:46.9590436Z           "complete": true,
2026-06-23T10:05:46.9590517Z           "evidence": [
2026-06-23T10:05:46.9590608Z             {
2026-06-23T10:05:46.9590712Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:46.9590812Z               "line": 780
2026-06-23T10:05:46.9590899Z             },
2026-06-23T10:05:46.9591079Z             {
2026-06-23T10:05:46.9591190Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:46.9591280Z               "line": 968
2026-06-23T10:05:46.9591366Z             }
2026-06-23T10:05:46.9591441Z           ]
2026-06-23T10:05:46.9591520Z         },
2026-06-23T10:05:46.9591600Z         "int": {
2026-06-23T10:05:46.9591700Z           "complete": true,
2026-06-23T10:05:46.9591791Z           "evidence": [
2026-06-23T10:05:46.9591872Z             {
2026-06-23T10:05:46.9591994Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-23T10:05:46.9592081Z               "line": 424
2026-06-23T10:05:46.9592173Z             }
2026-06-23T10:05:46.9592258Z           ]
2026-06-23T10:05:46.9592342Z         },
2026-06-23T10:05:46.9592432Z         "unit": {
2026-06-23T10:05:46.9592528Z           "complete": true,
2026-06-23T10:05:46.9592621Z           "evidence": [
2026-06-23T10:05:46.9592702Z             {
2026-06-23T10:05:46.9592812Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:46.9592903Z               "line": 1153
2026-06-23T10:05:46.9592997Z             },
2026-06-23T10:05:46.9593078Z             {
2026-06-23T10:05:46.9593194Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:46.9593289Z               "line": 1177
2026-06-23T10:05:46.9593369Z             }
2026-06-23T10:05:46.9593447Z           ]
2026-06-23T10:05:46.9593532Z         }
2026-06-23T10:05:46.9593618Z       }
2026-06-23T10:05:46.9593704Z     },
2026-06-23T10:05:46.9593795Z     {
2026-06-23T10:05:46.9593928Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-23T10:05:46.9597476Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-23T10:05:46.9597602Z       "requiredStages": [
2026-06-23T10:05:46.9597692Z         "impl",
2026-06-23T10:05:46.9597781Z         "unit",
2026-06-23T10:05:46.9597871Z         "int"
2026-06-23T10:05:46.9597958Z       ],
2026-06-23T10:05:46.9598053Z       "stages": {
2026-06-23T10:05:46.9598138Z         "doc": {
2026-06-23T10:05:46.9598239Z           "complete": false,
2026-06-23T10:05:46.9598424Z           "evidence": []
2026-06-23T10:05:46.9598500Z         },
2026-06-23T10:05:46.9598583Z         "impl": {
2026-06-23T10:05:46.9598668Z           "complete": true,
2026-06-23T10:05:46.9598758Z           "evidence": [
2026-06-23T10:05:46.9598840Z             {
2026-06-23T10:05:46.9599006Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9599096Z               "line": 1769
2026-06-23T10:05:46.9599178Z             },
2026-06-23T10:05:46.9599269Z             {
2026-06-23T10:05:46.9599373Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9599474Z               "line": 1790
2026-06-23T10:05:46.9599645Z             }
2026-06-23T10:05:46.9599731Z           ]
2026-06-23T10:05:46.9599818Z         },
2026-06-23T10:05:46.9599903Z         "int": {
2026-06-23T10:05:46.9600002Z           "complete": true,
2026-06-23T10:05:46.9600087Z           "evidence": [
2026-06-23T10:05:46.9600169Z             {
2026-06-23T10:05:46.9600300Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-23T10:05:46.9600409Z               "line": 330
2026-06-23T10:05:46.9600491Z             }
2026-06-23T10:05:46.9600577Z           ]
2026-06-23T10:05:46.9600662Z         },
2026-06-23T10:05:46.9600743Z         "unit": {
2026-06-23T10:05:46.9600839Z           "complete": true,
2026-06-23T10:05:46.9600925Z           "evidence": [
2026-06-23T10:05:46.9601015Z             {
2026-06-23T10:05:46.9601111Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9601201Z               "line": 9563
2026-06-23T10:05:46.9601286Z             }
2026-06-23T10:05:46.9601367Z           ]
2026-06-23T10:05:46.9601464Z         }
2026-06-23T10:05:46.9601550Z       }
2026-06-23T10:05:46.9601630Z     },
2026-06-23T10:05:46.9601716Z     {
2026-06-23T10:05:46.9601821Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-23T10:05:46.9605607Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-23T10:05:46.9605739Z       "requiredStages": [
2026-06-23T10:05:46.9605829Z         "impl",
2026-06-23T10:05:46.9605910Z         "unit"
2026-06-23T10:05:46.9605996Z       ],
2026-06-23T10:05:46.9606082Z       "stages": {
2026-06-23T10:05:46.9606172Z         "doc": {
2026-06-23T10:05:46.9606264Z           "complete": false,
2026-06-23T10:05:46.9606364Z           "evidence": []
2026-06-23T10:05:46.9606448Z         },
2026-06-23T10:05:46.9606545Z         "impl": {
2026-06-23T10:05:46.9606636Z           "complete": true,
2026-06-23T10:05:46.9606730Z           "evidence": [
2026-06-23T10:05:46.9606821Z             {
2026-06-23T10:05:46.9606927Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:46.9607026Z               "line": 991
2026-06-23T10:05:46.9607116Z             }
2026-06-23T10:05:46.9607208Z           ]
2026-06-23T10:05:46.9607407Z         },
2026-06-23T10:05:46.9607494Z         "int": {
2026-06-23T10:05:46.9607589Z           "complete": false,
2026-06-23T10:05:46.9607679Z           "evidence": []
2026-06-23T10:05:46.9607760Z         },
2026-06-23T10:05:46.9607847Z         "unit": {
2026-06-23T10:05:46.9607942Z           "complete": true,
2026-06-23T10:05:46.9608032Z           "evidence": [
2026-06-23T10:05:46.9608119Z             {
2026-06-23T10:05:46.9608233Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:46.9608317Z               "line": 1193
2026-06-23T10:05:46.9608403Z             }
2026-06-23T10:05:46.9608566Z           ]
2026-06-23T10:05:46.9608646Z         }
2026-06-23T10:05:46.9608736Z       }
2026-06-23T10:05:46.9608818Z     },
2026-06-23T10:05:46.9608909Z     {
2026-06-23T10:05:46.9609114Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-23T10:05:46.9613543Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-23T10:05:46.9613685Z       "requiredStages": [
2026-06-23T10:05:46.9613780Z         "impl",
2026-06-23T10:05:46.9613855Z         "unit"
2026-06-23T10:05:46.9613942Z       ],
2026-06-23T10:05:46.9614028Z       "stages": {
2026-06-23T10:05:46.9614123Z         "doc": {
2026-06-23T10:05:46.9614218Z           "complete": false,
2026-06-23T10:05:46.9614300Z           "evidence": []
2026-06-23T10:05:46.9614390Z         },
2026-06-23T10:05:46.9614475Z         "impl": {
2026-06-23T10:05:46.9614567Z           "complete": true,
2026-06-23T10:05:46.9614653Z           "evidence": [
2026-06-23T10:05:46.9614738Z             {
2026-06-23T10:05:46.9614852Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:46.9614939Z               "line": 264
2026-06-23T10:05:46.9615019Z             }
2026-06-23T10:05:46.9615105Z           ]
2026-06-23T10:05:46.9615182Z         },
2026-06-23T10:05:46.9615273Z         "int": {
2026-06-23T10:05:46.9615367Z           "complete": false,
2026-06-23T10:05:46.9615463Z           "evidence": []
2026-06-23T10:05:46.9615554Z         },
2026-06-23T10:05:46.9615634Z         "unit": {
2026-06-23T10:05:46.9615721Z           "complete": true,
2026-06-23T10:05:46.9615812Z           "evidence": [
2026-06-23T10:05:46.9615902Z             {
2026-06-23T10:05:46.9616006Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:46.9616100Z               "line": 1175
2026-06-23T10:05:46.9616182Z             },
2026-06-23T10:05:46.9616271Z             {
2026-06-23T10:05:46.9616374Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:46.9616470Z               "line": 1306
2026-06-23T10:05:46.9616661Z             },
2026-06-23T10:05:46.9616742Z             {
2026-06-23T10:05:46.9616853Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:46.9616943Z               "line": 1308
2026-06-23T10:05:46.9617037Z             }
2026-06-23T10:05:46.9617124Z           ]
2026-06-23T10:05:46.9617210Z         }
2026-06-23T10:05:46.9617300Z       }
2026-06-23T10:05:46.9617386Z     },
2026-06-23T10:05:46.9617477Z     {
2026-06-23T10:05:46.9617586Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-23T10:05:46.9617834Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-23T10:05:46.9618030Z       "requiredStages": [
2026-06-23T10:05:46.9618116Z         "impl",
2026-06-23T10:05:46.9618206Z         "unit"
2026-06-23T10:05:46.9618291Z       ],
2026-06-23T10:05:46.9618379Z       "stages": {
2026-06-23T10:05:46.9618464Z         "doc": {
2026-06-23T10:05:46.9618568Z           "complete": true,
2026-06-23T10:05:46.9618660Z           "evidence": [
2026-06-23T10:05:46.9618755Z             {
2026-06-23T10:05:46.9618863Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9619030Z               "line": 139
2026-06-23T10:05:46.9619121Z             }
2026-06-23T10:05:46.9619202Z           ]
2026-06-23T10:05:46.9619292Z         },
2026-06-23T10:05:46.9619373Z         "impl": {
2026-06-23T10:05:46.9619459Z           "complete": true,
2026-06-23T10:05:46.9619554Z           "evidence": [
2026-06-23T10:05:46.9619635Z             {
2026-06-23T10:05:46.9619755Z               "path": "crates/spt-store/src/db.rs",
2026-06-23T10:05:46.9619836Z               "line": 29
2026-06-23T10:05:46.9619936Z             },
2026-06-23T10:05:46.9620013Z             {
2026-06-23T10:05:46.9620121Z               "path": "crates/spt-store/src/db.rs",
2026-06-23T10:05:46.9623733Z               "line": 67
2026-06-23T10:05:46.9623849Z             },
2026-06-23T10:05:46.9623933Z             {
2026-06-23T10:05:46.9624070Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T10:05:46.9624180Z               "line": 101
2026-06-23T10:05:46.9624264Z             },
2026-06-23T10:05:46.9624354Z             {
2026-06-23T10:05:46.9624483Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T10:05:46.9624569Z               "line": 30
2026-06-23T10:05:46.9624654Z             },
2026-06-23T10:05:46.9624725Z             {
2026-06-23T10:05:46.9624846Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:46.9624936Z               "line": 48
2026-06-23T10:05:46.9625021Z             }
2026-06-23T10:05:46.9625108Z           ]
2026-06-23T10:05:46.9625198Z         },
2026-06-23T10:05:46.9625284Z         "int": {
2026-06-23T10:05:46.9625374Z           "complete": false,
2026-06-23T10:05:46.9625471Z           "evidence": []
2026-06-23T10:05:46.9625556Z         },
2026-06-23T10:05:46.9625641Z         "unit": {
2026-06-23T10:05:46.9625728Z           "complete": true,
2026-06-23T10:05:46.9625813Z           "evidence": [
2026-06-23T10:05:46.9625903Z             {
2026-06-23T10:05:46.9626033Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T10:05:46.9626133Z               "line": 162
2026-06-23T10:05:46.9626213Z             }
2026-06-23T10:05:46.9626295Z           ]
2026-06-23T10:05:46.9626372Z         }
2026-06-23T10:05:46.9626453Z       }
2026-06-23T10:05:46.9626542Z     },
2026-06-23T10:05:46.9626622Z     {
2026-06-23T10:05:46.9626742Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-23T10:05:46.9627165Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-23T10:05:46.9627273Z       "requiredStages": [
2026-06-23T10:05:46.9627370Z         "doc",
2026-06-23T10:05:46.9627460Z         "impl",
2026-06-23T10:05:46.9627545Z         "unit"
2026-06-23T10:05:46.9627621Z       ],
2026-06-23T10:05:46.9627703Z       "stages": {
2026-06-23T10:05:46.9627794Z         "doc": {
2026-06-23T10:05:46.9627884Z           "complete": true,
2026-06-23T10:05:46.9628136Z           "evidence": [
2026-06-23T10:05:46.9628222Z             {
2026-06-23T10:05:46.9628328Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9628423Z               "line": 151
2026-06-23T10:05:46.9628504Z             }
2026-06-23T10:05:46.9628590Z           ]
2026-06-23T10:05:46.9628671Z         },
2026-06-23T10:05:46.9628752Z         "impl": {
2026-06-23T10:05:46.9628838Z           "complete": true,
2026-06-23T10:05:46.9628924Z           "evidence": [
2026-06-23T10:05:46.9629095Z             {
2026-06-23T10:05:46.9629229Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T10:05:46.9629423Z               "line": 22
2026-06-23T10:05:46.9629504Z             }
2026-06-23T10:05:46.9629590Z           ]
2026-06-23T10:05:46.9629667Z         },
2026-06-23T10:05:46.9629752Z         "int": {
2026-06-23T10:05:46.9629847Z           "complete": false,
2026-06-23T10:05:46.9629933Z           "evidence": []
2026-06-23T10:05:46.9630019Z         },
2026-06-23T10:05:46.9630119Z         "unit": {
2026-06-23T10:05:46.9630234Z           "complete": true,
2026-06-23T10:05:46.9630325Z           "evidence": [
2026-06-23T10:05:46.9630410Z             {
2026-06-23T10:05:46.9630529Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T10:05:46.9630620Z               "line": 298
2026-06-23T10:05:46.9630706Z             }
2026-06-23T10:05:46.9630791Z           ]
2026-06-23T10:05:46.9630874Z         }
2026-06-23T10:05:46.9630959Z       }
2026-06-23T10:05:46.9631045Z     },
2026-06-23T10:05:46.9631130Z     {
2026-06-23T10:05:46.9631255Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-23T10:05:46.9631711Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-23T10:05:46.9631811Z       "requiredStages": [
2026-06-23T10:05:46.9631902Z         "impl",
2026-06-23T10:05:46.9631981Z         "unit"
2026-06-23T10:05:46.9632066Z       ],
2026-06-23T10:05:46.9632157Z       "stages": {
2026-06-23T10:05:46.9632248Z         "doc": {
2026-06-23T10:05:46.9632333Z           "complete": true,
2026-06-23T10:05:46.9632418Z           "evidence": [
2026-06-23T10:05:46.9632500Z             {
2026-06-23T10:05:46.9632606Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9632700Z               "line": 145
2026-06-23T10:05:46.9632782Z             }
2026-06-23T10:05:46.9632868Z           ]
2026-06-23T10:05:46.9632953Z         },
2026-06-23T10:05:46.9633038Z         "impl": {
2026-06-23T10:05:46.9633125Z           "complete": true,
2026-06-23T10:05:46.9633215Z           "evidence": [
2026-06-23T10:05:46.9633301Z             {
2026-06-23T10:05:46.9633435Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-23T10:05:46.9633525Z               "line": 160
2026-06-23T10:05:46.9633611Z             },
2026-06-23T10:05:46.9633692Z             {
2026-06-23T10:05:46.9633826Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9633911Z               "line": 200
2026-06-23T10:05:46.9634002Z             },
2026-06-23T10:05:46.9634084Z             {
2026-06-23T10:05:46.9634211Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9634298Z               "line": 298
2026-06-23T10:05:46.9634380Z             },
2026-06-23T10:05:46.9634466Z             {
2026-06-23T10:05:46.9634578Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-23T10:05:46.9634668Z               "line": 20
2026-06-23T10:05:46.9634750Z             }
2026-06-23T10:05:46.9634829Z           ]
2026-06-23T10:05:46.9634909Z         },
2026-06-23T10:05:46.9634990Z         "int": {
2026-06-23T10:05:46.9635086Z           "complete": false,
2026-06-23T10:05:46.9635172Z           "evidence": []
2026-06-23T10:05:46.9635262Z         },
2026-06-23T10:05:46.9635348Z         "unit": {
2026-06-23T10:05:46.9635448Z           "complete": true,
2026-06-23T10:05:46.9635529Z           "evidence": [
2026-06-23T10:05:46.9635614Z             {
2026-06-23T10:05:46.9635744Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9635939Z               "line": 937
2026-06-23T10:05:46.9636026Z             },
2026-06-23T10:05:46.9636106Z             {
2026-06-23T10:05:46.9636240Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-23T10:05:46.9636327Z               "line": 88
2026-06-23T10:05:46.9636411Z             },
2026-06-23T10:05:46.9636497Z             {
2026-06-23T10:05:46.9636617Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9636712Z               "line": 851
2026-06-23T10:05:46.9636802Z             },
2026-06-23T10:05:46.9636971Z             {
2026-06-23T10:05:46.9637093Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9637187Z               "line": 870
2026-06-23T10:05:46.9637263Z             },
2026-06-23T10:05:46.9637340Z             {
2026-06-23T10:05:46.9637462Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T10:05:46.9637557Z               "line": 279
2026-06-23T10:05:46.9637634Z             },
2026-06-23T10:05:46.9637720Z             {
2026-06-23T10:05:46.9637833Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-23T10:05:46.9637925Z               "line": 82
2026-06-23T10:05:46.9638011Z             },
2026-06-23T10:05:46.9638100Z             {
2026-06-23T10:05:46.9638210Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-23T10:05:46.9638292Z               "line": 99
2026-06-23T10:05:46.9638382Z             },
2026-06-23T10:05:46.9638467Z             {
2026-06-23T10:05:46.9638574Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-23T10:05:46.9638663Z               "line": 119
2026-06-23T10:05:46.9638749Z             }
2026-06-23T10:05:46.9638835Z           ]
2026-06-23T10:05:46.9638917Z         }
2026-06-23T10:05:46.9639059Z       }
2026-06-23T10:05:46.9639140Z     },
2026-06-23T10:05:46.9639222Z     {
2026-06-23T10:05:46.9639335Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-23T10:05:46.9640609Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-23T10:05:46.9640712Z       "requiredStages": [
2026-06-23T10:05:46.9640800Z         "doc",
2026-06-23T10:05:46.9640885Z         "impl",
2026-06-23T10:05:46.9640966Z         "unit"
2026-06-23T10:05:46.9641061Z       ],
2026-06-23T10:05:46.9641142Z       "stages": {
2026-06-23T10:05:46.9641228Z         "doc": {
2026-06-23T10:05:46.9641328Z           "complete": true,
2026-06-23T10:05:46.9641419Z           "evidence": [
2026-06-23T10:05:46.9641505Z             {
2026-06-23T10:05:46.9641614Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9641714Z               "line": 157
2026-06-23T10:05:46.9641801Z             }
2026-06-23T10:05:46.9641881Z           ]
2026-06-23T10:05:46.9641967Z         },
2026-06-23T10:05:46.9642043Z         "impl": {
2026-06-23T10:05:46.9642135Z           "complete": true,
2026-06-23T10:05:46.9642219Z           "evidence": [
2026-06-23T10:05:46.9642300Z             {
2026-06-23T10:05:46.9642428Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-23T10:05:46.9642508Z               "line": 137
2026-06-23T10:05:46.9642597Z             },
2026-06-23T10:05:46.9642678Z             {
2026-06-23T10:05:46.9642808Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9642893Z               "line": 564
2026-06-23T10:05:46.9642979Z             },
2026-06-23T10:05:46.9643065Z             {
2026-06-23T10:05:46.9643184Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9643265Z               "line": 571
2026-06-23T10:05:46.9643347Z             },
2026-06-23T10:05:46.9643532Z             {
2026-06-23T10:05:46.9643652Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9643738Z               "line": 227
2026-06-23T10:05:46.9643824Z             }
2026-06-23T10:05:46.9643908Z           ]
2026-06-23T10:05:46.9643986Z         },
2026-06-23T10:05:46.9644062Z         "int": {
2026-06-23T10:05:46.9644148Z           "complete": false,
2026-06-23T10:05:46.9644238Z           "evidence": []
2026-06-23T10:05:46.9644310Z         },
2026-06-23T10:05:46.9644401Z         "unit": {
2026-06-23T10:05:46.9644476Z           "complete": true,
2026-06-23T10:05:46.9644668Z           "evidence": [
2026-06-23T10:05:46.9644748Z             {
2026-06-23T10:05:46.9644867Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9644954Z               "line": 1622
2026-06-23T10:05:46.9645040Z             },
2026-06-23T10:05:46.9645124Z             {
2026-06-23T10:05:46.9645248Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9645338Z               "line": 1680
2026-06-23T10:05:46.9645417Z             },
2026-06-23T10:05:46.9645503Z             {
2026-06-23T10:05:46.9645627Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9645704Z               "line": 883
2026-06-23T10:05:46.9645788Z             }
2026-06-23T10:05:46.9645869Z           ]
2026-06-23T10:05:46.9645957Z         }
2026-06-23T10:05:46.9646038Z       }
2026-06-23T10:05:46.9646122Z     },
2026-06-23T10:05:46.9646199Z     {
2026-06-23T10:05:46.9646318Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-23T10:05:46.9646509Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-23T10:05:46.9646610Z       "requiredStages": [
2026-06-23T10:05:46.9646700Z         "impl",
2026-06-23T10:05:46.9646785Z         "unit"
2026-06-23T10:05:46.9646872Z       ],
2026-06-23T10:05:46.9646962Z       "stages": {
2026-06-23T10:05:46.9647043Z         "doc": {
2026-06-23T10:05:46.9647138Z           "complete": false,
2026-06-23T10:05:46.9647230Z           "evidence": []
2026-06-23T10:05:46.9647314Z         },
2026-06-23T10:05:46.9647401Z         "impl": {
2026-06-23T10:05:46.9647488Z           "complete": true,
2026-06-23T10:05:46.9647578Z           "evidence": [
2026-06-23T10:05:46.9647662Z             {
2026-06-23T10:05:46.9647785Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T10:05:46.9647867Z               "line": 15
2026-06-23T10:05:46.9647951Z             },
2026-06-23T10:05:46.9648036Z             {
2026-06-23T10:05:46.9648160Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T10:05:46.9648252Z               "line": 55
2026-06-23T10:05:46.9648327Z             },
2026-06-23T10:05:46.9648407Z             {
2026-06-23T10:05:46.9648518Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T10:05:46.9648609Z               "line": 66
2026-06-23T10:05:46.9648694Z             },
2026-06-23T10:05:46.9648771Z             {
2026-06-23T10:05:46.9648885Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T10:05:46.9649056Z               "line": 115
2026-06-23T10:05:46.9649139Z             },
2026-06-23T10:05:46.9649223Z             {
2026-06-23T10:05:46.9649333Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T10:05:46.9649419Z               "line": 138
2026-06-23T10:05:46.9649505Z             }
2026-06-23T10:05:46.9649591Z           ]
2026-06-23T10:05:46.9649672Z         },
2026-06-23T10:05:46.9649759Z         "int": {
2026-06-23T10:05:46.9649843Z           "complete": false,
2026-06-23T10:05:46.9649929Z           "evidence": []
2026-06-23T10:05:46.9650020Z         },
2026-06-23T10:05:46.9650107Z         "unit": {
2026-06-23T10:05:46.9650200Z           "complete": true,
2026-06-23T10:05:46.9650292Z           "evidence": [
2026-06-23T10:05:46.9650374Z             {
2026-06-23T10:05:46.9650478Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T10:05:46.9650563Z               "line": 363
2026-06-23T10:05:46.9650749Z             },
2026-06-23T10:05:46.9650830Z             {
2026-06-23T10:05:46.9650948Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T10:05:46.9651030Z               "line": 369
2026-06-23T10:05:46.9651116Z             },
2026-06-23T10:05:46.9651201Z             {
2026-06-23T10:05:46.9651311Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T10:05:46.9651397Z               "line": 383
2026-06-23T10:05:46.9651483Z             },
2026-06-23T10:05:46.9651564Z             {
2026-06-23T10:05:46.9651674Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T10:05:46.9651760Z               "line": 392
2026-06-23T10:05:46.9651940Z             },
2026-06-23T10:05:46.9652027Z             {
2026-06-23T10:05:46.9652136Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T10:05:46.9652222Z               "line": 195
2026-06-23T10:05:46.9652304Z             },
2026-06-23T10:05:46.9652384Z             {
2026-06-23T10:05:46.9652498Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T10:05:46.9652584Z               "line": 208
2026-06-23T10:05:46.9652676Z             },
2026-06-23T10:05:46.9652755Z             {
2026-06-23T10:05:46.9652879Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T10:05:46.9652970Z               "line": 271
2026-06-23T10:05:46.9653054Z             },
2026-06-23T10:05:46.9653139Z             {
2026-06-23T10:05:46.9653248Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T10:05:46.9653340Z               "line": 290
2026-06-23T10:05:46.9653425Z             },
2026-06-23T10:05:46.9653505Z             {
2026-06-23T10:05:46.9653630Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T10:05:46.9653716Z               "line": 319
2026-06-23T10:05:46.9653801Z             }
2026-06-23T10:05:46.9653873Z           ]
2026-06-23T10:05:46.9653955Z         }
2026-06-23T10:05:46.9654040Z       }
2026-06-23T10:05:46.9654121Z     },
2026-06-23T10:05:46.9654212Z     {
2026-06-23T10:05:46.9654327Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-23T10:05:46.9654579Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-23T10:05:46.9654674Z       "requiredStages": [
2026-06-23T10:05:46.9654755Z         "impl",
2026-06-23T10:05:46.9654841Z         "unit",
2026-06-23T10:05:46.9654923Z         "int"
2026-06-23T10:05:46.9655012Z       ],
2026-06-23T10:05:46.9655098Z       "stages": {
2026-06-23T10:05:46.9655191Z         "doc": {
2026-06-23T10:05:46.9655280Z           "complete": false,
2026-06-23T10:05:46.9655365Z           "evidence": []
2026-06-23T10:05:46.9655452Z         },
2026-06-23T10:05:46.9655538Z         "impl": {
2026-06-23T10:05:46.9655623Z           "complete": true,
2026-06-23T10:05:46.9655703Z           "evidence": [
2026-06-23T10:05:46.9655793Z             {
2026-06-23T10:05:46.9655912Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9656001Z               "line": 480
2026-06-23T10:05:46.9656096Z             },
2026-06-23T10:05:46.9656177Z             {
2026-06-23T10:05:46.9656297Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9656387Z               "line": 1038
2026-06-23T10:05:46.9656464Z             },
2026-06-23T10:05:46.9656550Z             {
2026-06-23T10:05:46.9656659Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9656759Z               "line": 1083
2026-06-23T10:05:46.9656841Z             },
2026-06-23T10:05:46.9656927Z             {
2026-06-23T10:05:46.9657040Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9657141Z               "line": 1108
2026-06-23T10:05:46.9657222Z             },
2026-06-23T10:05:46.9657303Z             {
2026-06-23T10:05:46.9657428Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9657518Z               "line": 1777
2026-06-23T10:05:46.9657603Z             },
2026-06-23T10:05:46.9657689Z             {
2026-06-23T10:05:46.9657795Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9657970Z               "line": 2022
2026-06-23T10:05:46.9658058Z             },
2026-06-23T10:05:46.9658148Z             {
2026-06-23T10:05:46.9658265Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9658350Z               "line": 2153
2026-06-23T10:05:46.9658432Z             },
2026-06-23T10:05:46.9658530Z             {
2026-06-23T10:05:46.9658639Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9658725Z               "line": 2201
2026-06-23T10:05:46.9658817Z             },
2026-06-23T10:05:46.9658901Z             {
2026-06-23T10:05:46.9659206Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T10:05:46.9659292Z               "line": 46
2026-06-23T10:05:46.9659384Z             },
2026-06-23T10:05:46.9659469Z             {
2026-06-23T10:05:46.9659583Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T10:05:46.9659675Z               "line": 200
2026-06-23T10:05:46.9659774Z             },
2026-06-23T10:05:46.9659864Z             {
2026-06-23T10:05:46.9659989Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-23T10:05:46.9660084Z               "line": 132
2026-06-23T10:05:46.9660170Z             },
2026-06-23T10:05:46.9660255Z             {
2026-06-23T10:05:46.9660380Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:46.9660455Z               "line": 137
2026-06-23T10:05:46.9660537Z             },
2026-06-23T10:05:46.9660619Z             {
2026-06-23T10:05:46.9660737Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:46.9660842Z               "line": 183
2026-06-23T10:05:46.9660929Z             }
2026-06-23T10:05:46.9661006Z           ]
2026-06-23T10:05:46.9661094Z         },
2026-06-23T10:05:46.9661184Z         "int": {
2026-06-23T10:05:46.9661275Z           "complete": true,
2026-06-23T10:05:46.9661376Z           "evidence": [
2026-06-23T10:05:46.9661461Z             {
2026-06-23T10:05:46.9661595Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-23T10:05:46.9661690Z               "line": 27
2026-06-23T10:05:46.9661775Z             },
2026-06-23T10:05:46.9661866Z             {
2026-06-23T10:05:46.9661991Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-23T10:05:46.9662081Z               "line": 148
2026-06-23T10:05:46.9662171Z             },
2026-06-23T10:05:46.9662249Z             {
2026-06-23T10:05:46.9662381Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-23T10:05:46.9662462Z               "line": 200
2026-06-23T10:05:46.9662554Z             }
2026-06-23T10:05:46.9662644Z           ]
2026-06-23T10:05:46.9662734Z         },
2026-06-23T10:05:46.9662820Z         "unit": {
2026-06-23T10:05:46.9662907Z           "complete": true,
2026-06-23T10:05:46.9663001Z           "evidence": [
2026-06-23T10:05:46.9663087Z             {
2026-06-23T10:05:46.9663198Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T10:05:46.9663283Z               "line": 366
2026-06-23T10:05:46.9663373Z             },
2026-06-23T10:05:46.9663462Z             {
2026-06-23T10:05:46.9663577Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T10:05:46.9663666Z               "line": 398
2026-06-23T10:05:46.9663741Z             },
2026-06-23T10:05:46.9663828Z             {
2026-06-23T10:05:46.9663933Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T10:05:46.9664037Z               "line": 419
2026-06-23T10:05:46.9664118Z             },
2026-06-23T10:05:46.9664205Z             {
2026-06-23T10:05:46.9664319Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T10:05:46.9664409Z               "line": 637
2026-06-23T10:05:46.9664500Z             },
2026-06-23T10:05:46.9664591Z             {
2026-06-23T10:05:46.9664718Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-23T10:05:46.9664811Z               "line": 289
2026-06-23T10:05:46.9664896Z             },
2026-06-23T10:05:46.9664982Z             {
2026-06-23T10:05:46.9665206Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-23T10:05:46.9665291Z               "line": 230
2026-06-23T10:05:46.9665367Z             },
2026-06-23T10:05:46.9665450Z             {
2026-06-23T10:05:46.9665573Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:46.9665654Z               "line": 526
2026-06-23T10:05:46.9665741Z             },
2026-06-23T10:05:46.9665826Z             {
2026-06-23T10:05:46.9665940Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:46.9666031Z               "line": 556
2026-06-23T10:05:46.9666113Z             }
2026-06-23T10:05:46.9666292Z           ]
2026-06-23T10:05:46.9666377Z         }
2026-06-23T10:05:46.9666468Z       }
2026-06-23T10:05:46.9666552Z     },
2026-06-23T10:05:46.9666642Z     {
2026-06-23T10:05:46.9666762Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-23T10:05:46.9668407Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-23T10:05:46.9668512Z       "requiredStages": [
2026-06-23T10:05:46.9668603Z         "doc",
2026-06-23T10:05:46.9668689Z         "impl",
2026-06-23T10:05:46.9668787Z         "unit"
2026-06-23T10:05:46.9668873Z       ],
2026-06-23T10:05:46.9669035Z       "stages": {
2026-06-23T10:05:46.9669118Z         "doc": {
2026-06-23T10:05:46.9669218Z           "complete": true,
2026-06-23T10:05:46.9669300Z           "evidence": [
2026-06-23T10:05:46.9669387Z             {
2026-06-23T10:05:46.9669495Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9669586Z               "line": 314
2026-06-23T10:05:46.9669677Z             }
2026-06-23T10:05:46.9669753Z           ]
2026-06-23T10:05:46.9669838Z         },
2026-06-23T10:05:46.9669915Z         "impl": {
2026-06-23T10:05:46.9670020Z           "complete": true,
2026-06-23T10:05:46.9670105Z           "evidence": [
2026-06-23T10:05:46.9670186Z             {
2026-06-23T10:05:46.9670325Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-23T10:05:46.9670411Z               "line": 33
2026-06-23T10:05:46.9670487Z             },
2026-06-23T10:05:46.9670569Z             {
2026-06-23T10:05:46.9670707Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-23T10:05:46.9670802Z               "line": 39
2026-06-23T10:05:46.9670888Z             }
2026-06-23T10:05:46.9670973Z           ]
2026-06-23T10:05:46.9671059Z         },
2026-06-23T10:05:46.9671140Z         "int": {
2026-06-23T10:05:46.9671232Z           "complete": false,
2026-06-23T10:05:46.9671321Z           "evidence": []
2026-06-23T10:05:46.9671407Z         },
2026-06-23T10:05:46.9671490Z         "unit": {
2026-06-23T10:05:46.9671589Z           "complete": true,
2026-06-23T10:05:46.9671673Z           "evidence": [
2026-06-23T10:05:46.9671758Z             {
2026-06-23T10:05:46.9671879Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-23T10:05:46.9671974Z               "line": 95
2026-06-23T10:05:46.9672064Z             }
2026-06-23T10:05:46.9672145Z           ]
2026-06-23T10:05:46.9672232Z         }
2026-06-23T10:05:46.9672317Z       }
2026-06-23T10:05:46.9672407Z     },
2026-06-23T10:05:46.9672494Z     {
2026-06-23T10:05:46.9672613Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-23T10:05:46.9674950Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-23T10:05:46.9675170Z       "requiredStages": [
2026-06-23T10:05:46.9675251Z         "impl",
2026-06-23T10:05:46.9675437Z         "unit"
2026-06-23T10:05:46.9675522Z       ],
2026-06-23T10:05:46.9675608Z       "stages": {
2026-06-23T10:05:46.9675686Z         "doc": {
2026-06-23T10:05:46.9675780Z           "complete": false,
2026-06-23T10:05:46.9675871Z           "evidence": []
2026-06-23T10:05:46.9675957Z         },
2026-06-23T10:05:46.9676038Z         "impl": {
2026-06-23T10:05:46.9676137Z           "complete": true,
2026-06-23T10:05:46.9676228Z           "evidence": [
2026-06-23T10:05:46.9676315Z             {
2026-06-23T10:05:46.9676447Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9676538Z               "line": 488
2026-06-23T10:05:46.9676625Z             }
2026-06-23T10:05:46.9676711Z           ]
2026-06-23T10:05:46.9676795Z         },
2026-06-23T10:05:46.9676885Z         "int": {
2026-06-23T10:05:46.9676976Z           "complete": false,
2026-06-23T10:05:46.9677074Z           "evidence": []
2026-06-23T10:05:46.9677168Z         },
2026-06-23T10:05:46.9677260Z         "unit": {
2026-06-23T10:05:46.9677356Z           "complete": true,
2026-06-23T10:05:46.9677436Z           "evidence": [
2026-06-23T10:05:46.9677516Z             {
2026-06-23T10:05:46.9677642Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9677732Z               "line": 1466
2026-06-23T10:05:46.9677817Z             }
2026-06-23T10:05:46.9677909Z           ]
2026-06-23T10:05:46.9677994Z         }
2026-06-23T10:05:46.9678080Z       }
2026-06-23T10:05:46.9678165Z     },
2026-06-23T10:05:46.9678248Z     {
2026-06-23T10:05:46.9678361Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-23T10:05:46.9680552Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-23T10:05:46.9680665Z       "requiredStages": [
2026-06-23T10:05:46.9680751Z         "unit"
2026-06-23T10:05:46.9680828Z       ],
2026-06-23T10:05:46.9680918Z       "stages": {
2026-06-23T10:05:46.9681003Z         "doc": {
2026-06-23T10:05:46.9681085Z           "complete": false,
2026-06-23T10:05:46.9681167Z           "evidence": []
2026-06-23T10:05:46.9681252Z         },
2026-06-23T10:05:46.9681337Z         "impl": {
2026-06-23T10:05:46.9681430Z           "complete": true,
2026-06-23T10:05:46.9681524Z           "evidence": [
2026-06-23T10:05:46.9681610Z             {
2026-06-23T10:05:46.9681715Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9681821Z               "line": 4175
2026-06-23T10:05:46.9681900Z             },
2026-06-23T10:05:46.9681986Z             {
2026-06-23T10:05:46.9682102Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9682182Z               "line": 4227
2026-06-23T10:05:46.9682267Z             },
2026-06-23T10:05:46.9682347Z             {
2026-06-23T10:05:46.9682562Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9682657Z               "line": 4272
2026-06-23T10:05:46.9682744Z             },
2026-06-23T10:05:46.9682835Z             {
2026-06-23T10:05:46.9682939Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.9683030Z               "line": 92
2026-06-23T10:05:46.9683111Z             },
2026-06-23T10:05:46.9683201Z             {
2026-06-23T10:05:46.9683301Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.9683393Z               "line": 148
2026-06-23T10:05:46.9683482Z             },
2026-06-23T10:05:46.9683660Z             {
2026-06-23T10:05:46.9683773Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.9683864Z               "line": 192
2026-06-23T10:05:46.9683950Z             },
2026-06-23T10:05:46.9684037Z             {
2026-06-23T10:05:46.9684145Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.9684236Z               "line": 200
2026-06-23T10:05:46.9684328Z             },
2026-06-23T10:05:46.9684417Z             {
2026-06-23T10:05:46.9684526Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.9684616Z               "line": 211
2026-06-23T10:05:46.9684697Z             },
2026-06-23T10:05:46.9684790Z             {
2026-06-23T10:05:46.9684890Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.9684986Z               "line": 265
2026-06-23T10:05:46.9685059Z             },
2026-06-23T10:05:46.9685143Z             {
2026-06-23T10:05:46.9685258Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.9685354Z               "line": 279
2026-06-23T10:05:46.9685434Z             }
2026-06-23T10:05:46.9685524Z           ]
2026-06-23T10:05:46.9685602Z         },
2026-06-23T10:05:46.9685687Z         "int": {
2026-06-23T10:05:46.9685782Z           "complete": false,
2026-06-23T10:05:46.9685883Z           "evidence": []
2026-06-23T10:05:46.9685964Z         },
2026-06-23T10:05:46.9686054Z         "unit": {
2026-06-23T10:05:46.9686144Z           "complete": true,
2026-06-23T10:05:46.9686231Z           "evidence": [
2026-06-23T10:05:46.9686321Z             {
2026-06-23T10:05:46.9686426Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.9686522Z               "line": 419
2026-06-23T10:05:46.9686608Z             },
2026-06-23T10:05:46.9686697Z             {
2026-06-23T10:05:46.9686817Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.9686900Z               "line": 470
2026-06-23T10:05:46.9686984Z             },
2026-06-23T10:05:46.9687070Z             {
2026-06-23T10:05:46.9687185Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.9687266Z               "line": 499
2026-06-23T10:05:46.9687360Z             },
2026-06-23T10:05:46.9687445Z             {
2026-06-23T10:05:46.9687555Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.9687644Z               "line": 526
2026-06-23T10:05:46.9687729Z             }
2026-06-23T10:05:46.9687824Z           ]
2026-06-23T10:05:46.9687911Z         }
2026-06-23T10:05:46.9687996Z       }
2026-06-23T10:05:46.9688081Z     },
2026-06-23T10:05:46.9688164Z     {
2026-06-23T10:05:46.9688278Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-23T10:05:46.9688454Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-23T10:05:46.9688554Z       "requiredStages": [
2026-06-23T10:05:46.9688635Z         "impl",
2026-06-23T10:05:46.9688715Z         "unit"
2026-06-23T10:05:46.9688803Z       ],
2026-06-23T10:05:46.9688879Z       "stages": {
2026-06-23T10:05:46.9689045Z         "doc": {
2026-06-23T10:05:46.9689146Z           "complete": false,
2026-06-23T10:05:46.9689246Z           "evidence": []
2026-06-23T10:05:46.9689322Z         },
2026-06-23T10:05:46.9689408Z         "impl": {
2026-06-23T10:05:46.9689509Z           "complete": true,
2026-06-23T10:05:46.9689593Z           "evidence": [
2026-06-23T10:05:46.9689679Z             {
2026-06-23T10:05:46.9689800Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:46.9689997Z               "line": 62
2026-06-23T10:05:46.9690084Z             },
2026-06-23T10:05:46.9690169Z             {
2026-06-23T10:05:46.9690295Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:46.9690387Z               "line": 71
2026-06-23T10:05:46.9690473Z             },
2026-06-23T10:05:46.9690558Z             {
2026-06-23T10:05:46.9690686Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:46.9690769Z               "line": 80
2026-06-23T10:05:46.9690850Z             },
2026-06-23T10:05:46.9691074Z             {
2026-06-23T10:05:46.9691193Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:46.9691287Z               "line": 88
2026-06-23T10:05:46.9691374Z             },
2026-06-23T10:05:46.9691455Z             {
2026-06-23T10:05:46.9691578Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9691660Z               "line": 33
2026-06-23T10:05:46.9691746Z             },
2026-06-23T10:05:46.9691832Z             {
2026-06-23T10:05:46.9691946Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9692032Z               "line": 65
2026-06-23T10:05:46.9692117Z             },
2026-06-23T10:05:46.9692203Z             {
2026-06-23T10:05:46.9692314Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9692404Z               "line": 74
2026-06-23T10:05:46.9692489Z             },
2026-06-23T10:05:46.9692576Z             {
2026-06-23T10:05:46.9692691Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9692784Z               "line": 93
2026-06-23T10:05:46.9692869Z             },
2026-06-23T10:05:46.9692951Z             {
2026-06-23T10:05:46.9693071Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9693160Z               "line": 102
2026-06-23T10:05:46.9693246Z             },
2026-06-23T10:05:46.9693329Z             {
2026-06-23T10:05:46.9693447Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9693532Z               "line": 111
2026-06-23T10:05:46.9693614Z             },
2026-06-23T10:05:46.9693699Z             {
2026-06-23T10:05:46.9693813Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9696482Z               "line": 122
2026-06-23T10:05:46.9696586Z             },
2026-06-23T10:05:46.9696671Z             {
2026-06-23T10:05:46.9696806Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9696890Z               "line": 140
2026-06-23T10:05:46.9696981Z             },
2026-06-23T10:05:46.9697067Z             {
2026-06-23T10:05:46.9697196Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9697277Z               "line": 149
2026-06-23T10:05:46.9697368Z             },
2026-06-23T10:05:46.9697450Z             {
2026-06-23T10:05:46.9697562Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9697649Z               "line": 158
2026-06-23T10:05:46.9697740Z             },
2026-06-23T10:05:46.9697826Z             {
2026-06-23T10:05:46.9697929Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9698014Z               "line": 169
2026-06-23T10:05:46.9698101Z             },
2026-06-23T10:05:46.9698176Z             {
2026-06-23T10:05:46.9698284Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9698366Z               "line": 177
2026-06-23T10:05:46.9698452Z             },
2026-06-23T10:05:46.9698537Z             {
2026-06-23T10:05:46.9698651Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9698748Z               "line": 186
2026-06-23T10:05:46.9698829Z             },
2026-06-23T10:05:46.9698914Z             {
2026-06-23T10:05:46.9699114Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9699200Z               "line": 195
2026-06-23T10:05:46.9699280Z             },
2026-06-23T10:05:46.9699363Z             {
2026-06-23T10:05:46.9699472Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9699707Z               "line": 204
2026-06-23T10:05:46.9699796Z             },
2026-06-23T10:05:46.9699872Z             {
2026-06-23T10:05:46.9699993Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9700083Z               "line": 216
2026-06-23T10:05:46.9700167Z             },
2026-06-23T10:05:46.9700254Z             {
2026-06-23T10:05:46.9700360Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9700444Z               "line": 223
2026-06-23T10:05:46.9700529Z             },
2026-06-23T10:05:46.9700615Z             {
2026-06-23T10:05:46.9700828Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9700913Z               "line": 232
2026-06-23T10:05:46.9700999Z             },
2026-06-23T10:05:46.9701081Z             {
2026-06-23T10:05:46.9701194Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9701281Z               "line": 239
2026-06-23T10:05:46.9701367Z             },
2026-06-23T10:05:46.9701457Z             {
2026-06-23T10:05:46.9701566Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9701657Z               "line": 306
2026-06-23T10:05:46.9701738Z             },
2026-06-23T10:05:46.9701823Z             {
2026-06-23T10:05:46.9701930Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9702020Z               "line": 318
2026-06-23T10:05:46.9702105Z             },
2026-06-23T10:05:46.9702186Z             {
2026-06-23T10:05:46.9702297Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9702382Z               "line": 405
2026-06-23T10:05:46.9702472Z             }
2026-06-23T10:05:46.9702555Z           ]
2026-06-23T10:05:46.9702640Z         },
2026-06-23T10:05:46.9702725Z         "int": {
2026-06-23T10:05:46.9702821Z           "complete": false,
2026-06-23T10:05:46.9702912Z           "evidence": []
2026-06-23T10:05:46.9702992Z         },
2026-06-23T10:05:46.9703078Z         "unit": {
2026-06-23T10:05:46.9703175Z           "complete": true,
2026-06-23T10:05:46.9703270Z           "evidence": [
2026-06-23T10:05:46.9703354Z             {
2026-06-23T10:05:46.9703458Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9703539Z               "line": 487
2026-06-23T10:05:46.9703627Z             },
2026-06-23T10:05:46.9703711Z             {
2026-06-23T10:05:46.9703826Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9703908Z               "line": 528
2026-06-23T10:05:46.9703988Z             },
2026-06-23T10:05:46.9704073Z             {
2026-06-23T10:05:46.9704179Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9704264Z               "line": 541
2026-06-23T10:05:46.9704345Z             },
2026-06-23T10:05:46.9704431Z             {
2026-06-23T10:05:46.9704537Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9704622Z               "line": 627
2026-06-23T10:05:46.9704707Z             }
2026-06-23T10:05:46.9704795Z           ]
2026-06-23T10:05:46.9704880Z         }
2026-06-23T10:05:46.9704966Z       }
2026-06-23T10:05:46.9705046Z     },
2026-06-23T10:05:46.9705133Z     {
2026-06-23T10:05:46.9705242Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-23T10:05:46.9705443Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-23T10:05:46.9705542Z       "requiredStages": [
2026-06-23T10:05:46.9705627Z         "impl",
2026-06-23T10:05:46.9705712Z         "unit"
2026-06-23T10:05:46.9705799Z       ],
2026-06-23T10:05:46.9705888Z       "stages": {
2026-06-23T10:05:46.9705973Z         "doc": {
2026-06-23T10:05:46.9706073Z           "complete": false,
2026-06-23T10:05:46.9706159Z           "evidence": []
2026-06-23T10:05:46.9706240Z         },
2026-06-23T10:05:46.9706325Z         "impl": {
2026-06-23T10:05:46.9706416Z           "complete": true,
2026-06-23T10:05:46.9706512Z           "evidence": [
2026-06-23T10:05:46.9706597Z             {
2026-06-23T10:05:46.9706708Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T10:05:46.9706884Z               "line": 175
2026-06-23T10:05:46.9706969Z             },
2026-06-23T10:05:46.9707056Z             {
2026-06-23T10:05:46.9707175Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.9707269Z               "line": 171
2026-06-23T10:05:46.9707351Z             }
2026-06-23T10:05:46.9707419Z           ]
2026-06-23T10:05:46.9707504Z         },
2026-06-23T10:05:46.9707589Z         "int": {
2026-06-23T10:05:46.9707681Z           "complete": false,
2026-06-23T10:05:46.9707780Z           "evidence": []
2026-06-23T10:05:46.9707923Z         },
2026-06-23T10:05:46.9708010Z         "unit": {
2026-06-23T10:05:46.9708099Z           "complete": true,
2026-06-23T10:05:46.9708185Z           "evidence": [
2026-06-23T10:05:46.9708267Z             {
2026-06-23T10:05:46.9708377Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T10:05:46.9708461Z               "line": 297
2026-06-23T10:05:46.9708546Z             },
2026-06-23T10:05:46.9708642Z             {
2026-06-23T10:05:46.9708755Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.9708840Z               "line": 836
2026-06-23T10:05:46.9708921Z             },
2026-06-23T10:05:46.9709126Z             {
2026-06-23T10:05:46.9709240Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:46.9709327Z               "line": 849
2026-06-23T10:05:46.9709408Z             }
2026-06-23T10:05:46.9709488Z           ]
2026-06-23T10:05:46.9709575Z         }
2026-06-23T10:05:46.9709656Z       }
2026-06-23T10:05:46.9709741Z     },
2026-06-23T10:05:46.9709870Z     {
2026-06-23T10:05:46.9709985Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-23T10:05:46.9710118Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-23T10:05:46.9710214Z       "requiredStages": [
2026-06-23T10:05:46.9710295Z         "impl",
2026-06-23T10:05:46.9710370Z         "unit"
2026-06-23T10:05:46.9710456Z       ],
2026-06-23T10:05:46.9710543Z       "stages": {
2026-06-23T10:05:46.9710638Z         "doc": {
2026-06-23T10:05:46.9710733Z           "complete": false,
2026-06-23T10:05:46.9710819Z           "evidence": []
2026-06-23T10:05:46.9710901Z         },
2026-06-23T10:05:46.9710990Z         "impl": {
2026-06-23T10:05:46.9711075Z           "complete": true,
2026-06-23T10:05:46.9711166Z           "evidence": [
2026-06-23T10:05:46.9711251Z             {
2026-06-23T10:05:46.9711373Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9711458Z               "line": 116
2026-06-23T10:05:46.9711545Z             },
2026-06-23T10:05:46.9711627Z             {
2026-06-23T10:05:46.9711754Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:46.9711846Z               "line": 507
2026-06-23T10:05:46.9711922Z             }
2026-06-23T10:05:46.9712012Z           ]
2026-06-23T10:05:46.9712093Z         },
2026-06-23T10:05:46.9712180Z         "int": {
2026-06-23T10:05:46.9712275Z           "complete": false,
2026-06-23T10:05:46.9712379Z           "evidence": []
2026-06-23T10:05:46.9712461Z         },
2026-06-23T10:05:46.9712546Z         "unit": {
2026-06-23T10:05:46.9712642Z           "complete": true,
2026-06-23T10:05:46.9712727Z           "evidence": [
2026-06-23T10:05:46.9712810Z             {
2026-06-23T10:05:46.9712923Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:46.9713014Z               "line": 541
2026-06-23T10:05:46.9713095Z             }
2026-06-23T10:05:46.9713172Z           ]
2026-06-23T10:05:46.9713256Z         }
2026-06-23T10:05:46.9713333Z       }
2026-06-23T10:05:46.9713415Z     },
2026-06-23T10:05:46.9713491Z     {
2026-06-23T10:05:46.9713609Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-23T10:05:46.9713769Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-23T10:05:46.9713867Z       "requiredStages": [
2026-06-23T10:05:46.9713952Z         "impl",
2026-06-23T10:05:46.9714037Z         "unit"
2026-06-23T10:05:46.9714124Z       ],
2026-06-23T10:05:46.9714304Z       "stages": {
2026-06-23T10:05:46.9714386Z         "doc": {
2026-06-23T10:05:46.9714473Z           "complete": false,
2026-06-23T10:05:46.9714572Z           "evidence": []
2026-06-23T10:05:46.9714652Z         },
2026-06-23T10:05:46.9714734Z         "impl": {
2026-06-23T10:05:46.9714825Z           "complete": true,
2026-06-23T10:05:46.9714910Z           "evidence": [
2026-06-23T10:05:46.9714996Z             {
2026-06-23T10:05:46.9715121Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.9715211Z               "line": 763
2026-06-23T10:05:46.9715296Z             },
2026-06-23T10:05:46.9715473Z             {
2026-06-23T10:05:46.9715592Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-23T10:05:46.9715670Z               "line": 28
2026-06-23T10:05:46.9715755Z             }
2026-06-23T10:05:46.9715839Z           ]
2026-06-23T10:05:46.9715921Z         },
2026-06-23T10:05:46.9716004Z         "int": {
2026-06-23T10:05:46.9716094Z           "complete": false,
2026-06-23T10:05:46.9716187Z           "evidence": []
2026-06-23T10:05:46.9716272Z         },
2026-06-23T10:05:46.9716363Z         "unit": {
2026-06-23T10:05:46.9716457Z           "complete": true,
2026-06-23T10:05:46.9716547Z           "evidence": [
2026-06-23T10:05:46.9716629Z             {
2026-06-23T10:05:46.9716744Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-23T10:05:46.9716828Z               "line": 229
2026-06-23T10:05:46.9716914Z             }
2026-06-23T10:05:46.9717001Z           ]
2026-06-23T10:05:46.9717087Z         }
2026-06-23T10:05:46.9717171Z       }
2026-06-23T10:05:46.9717273Z     },
2026-06-23T10:05:46.9717344Z     {
2026-06-23T10:05:46.9717458Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-23T10:05:46.9717583Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-23T10:05:46.9717678Z       "requiredStages": [],
2026-06-23T10:05:46.9717768Z       "stages": {
2026-06-23T10:05:46.9717859Z         "doc": {
2026-06-23T10:05:46.9717955Z           "complete": false,
2026-06-23T10:05:46.9718030Z           "evidence": []
2026-06-23T10:05:46.9718111Z         },
2026-06-23T10:05:46.9718192Z         "impl": {
2026-06-23T10:05:46.9718274Z           "complete": false,
2026-06-23T10:05:46.9718359Z           "evidence": []
2026-06-23T10:05:46.9718449Z         },
2026-06-23T10:05:46.9718532Z         "int": {
2026-06-23T10:05:46.9718618Z           "complete": false,
2026-06-23T10:05:46.9718702Z           "evidence": []
2026-06-23T10:05:46.9718783Z         },
2026-06-23T10:05:46.9718871Z         "unit": {
2026-06-23T10:05:46.9719031Z           "complete": false,
2026-06-23T10:05:46.9719130Z           "evidence": []
2026-06-23T10:05:46.9719221Z         }
2026-06-23T10:05:46.9719301Z       }
2026-06-23T10:05:46.9719386Z     },
2026-06-23T10:05:46.9719466Z     {
2026-06-23T10:05:46.9719606Z       "id": "REQ-HAZARD-STOP-PATH-PSYCHE-ORPHAN-REAP",
2026-06-23T10:05:46.9722544Z       "title": "Endpoint-stop and brain-death reconcile MUST reap a brain-less perch's orphan detached Psyche via the cmdline-scoped guard (`psyche_orphan_should_reap`) — the handle-reap (`LiveSet::stop_host`, REQ-HAZARD-UNHOST-PSYCHE-REAP) CANNOT, because the owning brain is gone (its `psyche_child` handle died with it), and the brain-start scoped-reap (REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP) never fires for a perch being STOPPED rather than re-hosted. So the live-host calls the scoped reap after `stop_host` at the reconcile stop-side AND in `confirm_residency_or_unhost`. Preserves fail-safe-decline (pid-alive AND exe-basename==psyche-program AND cmdline contains `<id>-psyche`; any unreadable signal DECLINES — a missed dup is bounded, a wrong-kill is catastrophic). This is the orphan-leak half of the perri F-010xF-015 field bug (the unsupervised install-dir Psyche that locked an update); the other half is the psyche own-copy (ADR-0025 amendment). (v0.13.2 W3 (a))",
2026-06-23T10:05:46.9722648Z       "requiredStages": [
2026-06-23T10:05:46.9722736Z         "doc",
2026-06-23T10:05:46.9722830Z         "impl",
2026-06-23T10:05:46.9723036Z         "unit",
2026-06-23T10:05:46.9723121Z         "int"
2026-06-23T10:05:46.9723211Z       ],
2026-06-23T10:05:46.9723297Z       "stages": {
2026-06-23T10:05:46.9723389Z         "doc": {
2026-06-23T10:05:46.9723473Z           "complete": true,
2026-06-23T10:05:46.9723564Z           "evidence": [
2026-06-23T10:05:46.9723651Z             {
2026-06-23T10:05:46.9723769Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9723850Z               "line": 531
2026-06-23T10:05:46.9723936Z             },
2026-06-23T10:05:46.9724019Z             {
2026-06-23T10:05:46.9724189Z               "path": "docs/adr/0025-live-daemon-coordinated-adapter-update.md",
2026-06-23T10:05:46.9724380Z               "line": 45
2026-06-23T10:05:46.9724460Z             }
2026-06-23T10:05:46.9724540Z           ]
2026-06-23T10:05:46.9724626Z         },
2026-06-23T10:05:46.9724713Z         "impl": {
2026-06-23T10:05:46.9724803Z           "complete": true,
2026-06-23T10:05:46.9724888Z           "evidence": [
2026-06-23T10:05:46.9724985Z             {
2026-06-23T10:05:46.9725108Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9725203Z               "line": 292
2026-06-23T10:05:46.9725286Z             },
2026-06-23T10:05:46.9725366Z             {
2026-06-23T10:05:46.9725485Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9725561Z               "line": 483
2026-06-23T10:05:46.9725652Z             },
2026-06-23T10:05:46.9725733Z             {
2026-06-23T10:05:46.9725842Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9725943Z               "line": 655
2026-06-23T10:05:46.9726028Z             },
2026-06-23T10:05:46.9726114Z             {
2026-06-23T10:05:46.9726215Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9726301Z               "line": 708
2026-06-23T10:05:46.9726390Z             }
2026-06-23T10:05:46.9726471Z           ]
2026-06-23T10:05:46.9726559Z         },
2026-06-23T10:05:46.9726644Z         "int": {
2026-06-23T10:05:46.9726738Z           "complete": true,
2026-06-23T10:05:46.9726828Z           "evidence": [
2026-06-23T10:05:46.9726914Z             {
2026-06-23T10:05:46.9727060Z               "path": "crates/spt/tests/live_adapt_psyche_lock_e2e.rs",
2026-06-23T10:05:46.9727155Z               "line": 95
2026-06-23T10:05:46.9727241Z             },
2026-06-23T10:05:46.9727323Z             {
2026-06-23T10:05:46.9727470Z               "path": "crates/spt/tests/live_adapt_psyche_lock_e2e.rs",
2026-06-23T10:05:46.9727551Z               "line": 372
2026-06-23T10:05:46.9727637Z             }
2026-06-23T10:05:46.9727727Z           ]
2026-06-23T10:05:46.9727808Z         },
2026-06-23T10:05:46.9727900Z         "unit": {
2026-06-23T10:05:46.9727980Z           "complete": true,
2026-06-23T10:05:46.9728079Z           "evidence": [
2026-06-23T10:05:46.9728162Z             {
2026-06-23T10:05:46.9728285Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9728389Z               "line": 1619
2026-06-23T10:05:46.9728467Z             },
2026-06-23T10:05:46.9728557Z             {
2026-06-23T10:05:46.9728667Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9728762Z               "line": 1685
2026-06-23T10:05:46.9728844Z             }
2026-06-23T10:05:46.9728919Z           ]
2026-06-23T10:05:46.9729077Z         }
2026-06-23T10:05:46.9729159Z       }
2026-06-23T10:05:46.9729243Z     },
2026-06-23T10:05:46.9729329Z     {
2026-06-23T10:05:46.9729440Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-23T10:05:46.9729586Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-23T10:05:46.9729690Z       "requiredStages": [
2026-06-23T10:05:46.9729776Z         "impl",
2026-06-23T10:05:46.9729852Z         "unit"
2026-06-23T10:05:46.9729931Z       ],
2026-06-23T10:05:46.9730017Z       "stages": {
2026-06-23T10:05:46.9730103Z         "doc": {
2026-06-23T10:05:46.9730190Z           "complete": false,
2026-06-23T10:05:46.9730380Z           "evidence": []
2026-06-23T10:05:46.9730471Z         },
2026-06-23T10:05:46.9730557Z         "impl": {
2026-06-23T10:05:46.9730651Z           "complete": true,
2026-06-23T10:05:46.9730733Z           "evidence": [
2026-06-23T10:05:46.9730818Z             {
2026-06-23T10:05:46.9730927Z               "path": "crates/spt-live/src/turn.rs",
2026-06-23T10:05:46.9731029Z               "line": 19
2026-06-23T10:05:46.9731110Z             },
2026-06-23T10:05:46.9731196Z             {
2026-06-23T10:05:46.9731319Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:46.9731406Z               "line": 466
2026-06-23T10:05:46.9731586Z             },
2026-06-23T10:05:46.9731668Z             {
2026-06-23T10:05:46.9731791Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:46.9731886Z               "line": 502
2026-06-23T10:05:46.9731969Z             },
2026-06-23T10:05:46.9732055Z             {
2026-06-23T10:05:46.9732172Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:46.9732266Z               "line": 550
2026-06-23T10:05:46.9732348Z             },
2026-06-23T10:05:46.9732433Z             {
2026-06-23T10:05:46.9732551Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-23T10:05:46.9732636Z               "line": 15
2026-06-23T10:05:46.9732718Z             },
2026-06-23T10:05:46.9732803Z             {
2026-06-23T10:05:46.9732913Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-23T10:05:46.9733005Z               "line": 48
2026-06-23T10:05:46.9733090Z             },
2026-06-23T10:05:46.9733165Z             {
2026-06-23T10:05:46.9733276Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-23T10:05:46.9733357Z               "line": 119
2026-06-23T10:05:46.9733442Z             },
2026-06-23T10:05:46.9733523Z             {
2026-06-23T10:05:46.9733629Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9733728Z               "line": 4603
2026-06-23T10:05:46.9733814Z             }
2026-06-23T10:05:46.9733891Z           ]
2026-06-23T10:05:46.9733982Z         },
2026-06-23T10:05:46.9734063Z         "int": {
2026-06-23T10:05:46.9734158Z           "complete": false,
2026-06-23T10:05:46.9734240Z           "evidence": []
2026-06-23T10:05:46.9734325Z         },
2026-06-23T10:05:46.9734410Z         "unit": {
2026-06-23T10:05:46.9734501Z           "complete": true,
2026-06-23T10:05:46.9734598Z           "evidence": [
2026-06-23T10:05:46.9734681Z             {
2026-06-23T10:05:46.9734806Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:46.9734898Z               "line": 768
2026-06-23T10:05:46.9734982Z             },
2026-06-23T10:05:46.9735068Z             {
2026-06-23T10:05:46.9735177Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-23T10:05:46.9735268Z               "line": 165
2026-06-23T10:05:46.9735353Z             },
2026-06-23T10:05:46.9735439Z             {
2026-06-23T10:05:46.9735545Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-23T10:05:46.9735640Z               "line": 175
2026-06-23T10:05:46.9735720Z             }
2026-06-23T10:05:46.9735807Z           ]
2026-06-23T10:05:46.9735888Z         }
2026-06-23T10:05:46.9735969Z       }
2026-06-23T10:05:46.9736059Z     },
2026-06-23T10:05:46.9736150Z     {
2026-06-23T10:05:46.9736269Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-23T10:05:46.9737148Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-23T10:05:46.9737251Z       "requiredStages": [
2026-06-23T10:05:46.9737345Z         "impl",
2026-06-23T10:05:46.9737422Z         "unit"
2026-06-23T10:05:46.9737512Z       ],
2026-06-23T10:05:46.9737601Z       "stages": {
2026-06-23T10:05:46.9737691Z         "doc": {
2026-06-23T10:05:46.9737787Z           "complete": false,
2026-06-23T10:05:46.9737944Z           "evidence": []
2026-06-23T10:05:46.9738035Z         },
2026-06-23T10:05:46.9738121Z         "impl": {
2026-06-23T10:05:46.9738207Z           "complete": true,
2026-06-23T10:05:46.9738306Z           "evidence": [
2026-06-23T10:05:46.9738388Z             {
2026-06-23T10:05:46.9738516Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.9738602Z               "line": 192
2026-06-23T10:05:46.9738688Z             },
2026-06-23T10:05:46.9738770Z             {
2026-06-23T10:05:46.9738874Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.9739056Z               "line": 279
2026-06-23T10:05:46.9739250Z             }
2026-06-23T10:05:46.9739337Z           ]
2026-06-23T10:05:46.9739423Z         },
2026-06-23T10:05:46.9739503Z         "int": {
2026-06-23T10:05:46.9739589Z           "complete": false,
2026-06-23T10:05:46.9739676Z           "evidence": []
2026-06-23T10:05:46.9739757Z         },
2026-06-23T10:05:46.9739836Z         "unit": {
2026-06-23T10:05:46.9739938Z           "complete": true,
2026-06-23T10:05:46.9740024Z           "evidence": [
2026-06-23T10:05:46.9740114Z             {
2026-06-23T10:05:46.9740231Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.9740318Z               "line": 470
2026-06-23T10:05:46.9740407Z             },
2026-06-23T10:05:46.9740487Z             {
2026-06-23T10:05:46.9740591Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:46.9740673Z               "line": 526
2026-06-23T10:05:46.9740760Z             }
2026-06-23T10:05:46.9740839Z           ]
2026-06-23T10:05:46.9740925Z         }
2026-06-23T10:05:46.9741027Z       }
2026-06-23T10:05:46.9741103Z     },
2026-06-23T10:05:46.9741182Z     {
2026-06-23T10:05:46.9741293Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-23T10:05:46.9744966Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-23T10:05:46.9745100Z       "requiredStages": [
2026-06-23T10:05:46.9745186Z         "impl",
2026-06-23T10:05:46.9745270Z         "unit",
2026-06-23T10:05:46.9745357Z         "int"
2026-06-23T10:05:46.9745439Z       ],
2026-06-23T10:05:46.9745524Z       "stages": {
2026-06-23T10:05:46.9745613Z         "doc": {
2026-06-23T10:05:46.9745713Z           "complete": false,
2026-06-23T10:05:46.9745800Z           "evidence": []
2026-06-23T10:05:46.9745886Z         },
2026-06-23T10:05:46.9745971Z         "impl": {
2026-06-23T10:05:46.9746071Z           "complete": true,
2026-06-23T10:05:46.9746171Z           "evidence": [
2026-06-23T10:05:46.9746247Z             {
2026-06-23T10:05:46.9746381Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T10:05:46.9746472Z               "line": 116
2026-06-23T10:05:46.9746557Z             },
2026-06-23T10:05:46.9746643Z             {
2026-06-23T10:05:46.9746872Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:46.9746967Z               "line": 132
2026-06-23T10:05:46.9747054Z             },
2026-06-23T10:05:46.9747139Z             {
2026-06-23T10:05:46.9747258Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T10:05:46.9747350Z               "line": 434
2026-06-23T10:05:46.9747440Z             },
2026-06-23T10:05:46.9747515Z             {
2026-06-23T10:05:46.9747630Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:46.9747717Z               "line": 139
2026-06-23T10:05:46.9747801Z             },
2026-06-23T10:05:46.9747968Z             {
2026-06-23T10:05:46.9748086Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:46.9748180Z               "line": 329
2026-06-23T10:05:46.9748270Z             },
2026-06-23T10:05:46.9748352Z             {
2026-06-23T10:05:46.9748461Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:46.9748551Z               "line": 558
2026-06-23T10:05:46.9748643Z             }
2026-06-23T10:05:46.9748720Z           ]
2026-06-23T10:05:46.9748805Z         },
2026-06-23T10:05:46.9748885Z         "int": {
2026-06-23T10:05:46.9749067Z           "complete": true,
2026-06-23T10:05:46.9749157Z           "evidence": [
2026-06-23T10:05:46.9749244Z             {
2026-06-23T10:05:46.9749387Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-23T10:05:46.9749481Z               "line": 32
2026-06-23T10:05:46.9749568Z             }
2026-06-23T10:05:46.9749649Z           ]
2026-06-23T10:05:46.9749744Z         },
2026-06-23T10:05:46.9749834Z         "unit": {
2026-06-23T10:05:46.9749927Z           "complete": true,
2026-06-23T10:05:46.9750020Z           "evidence": [
2026-06-23T10:05:46.9750092Z             {
2026-06-23T10:05:46.9750217Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:46.9750298Z               "line": 628
2026-06-23T10:05:46.9750383Z             },
2026-06-23T10:05:46.9750473Z             {
2026-06-23T10:05:46.9750589Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:46.9750678Z               "line": 649
2026-06-23T10:05:46.9750763Z             },
2026-06-23T10:05:46.9750844Z             {
2026-06-23T10:05:46.9750963Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:46.9751066Z               "line": 665
2026-06-23T10:05:46.9751142Z             },
2026-06-23T10:05:46.9751224Z             {
2026-06-23T10:05:46.9751334Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:46.9751418Z               "line": 683
2026-06-23T10:05:46.9751510Z             },
2026-06-23T10:05:46.9751592Z             {
2026-06-23T10:05:46.9751705Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:46.9751786Z               "line": 707
2026-06-23T10:05:46.9751873Z             }
2026-06-23T10:05:46.9751958Z           ]
2026-06-23T10:05:46.9752043Z         }
2026-06-23T10:05:46.9752129Z       }
2026-06-23T10:05:46.9752221Z     },
2026-06-23T10:05:46.9752306Z     {
2026-06-23T10:05:46.9752416Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-23T10:05:46.9752573Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-23T10:05:46.9752664Z       "requiredStages": [
2026-06-23T10:05:46.9752750Z         "impl",
2026-06-23T10:05:46.9752836Z         "unit"
2026-06-23T10:05:46.9752916Z       ],
2026-06-23T10:05:46.9753002Z       "stages": {
2026-06-23T10:05:46.9753094Z         "doc": {
2026-06-23T10:05:46.9753189Z           "complete": false,
2026-06-23T10:05:46.9753269Z           "evidence": []
2026-06-23T10:05:46.9753363Z         },
2026-06-23T10:05:46.9753445Z         "impl": {
2026-06-23T10:05:46.9753539Z           "complete": true,
2026-06-23T10:05:46.9753628Z           "evidence": [
2026-06-23T10:05:46.9753718Z             {
2026-06-23T10:05:46.9753824Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T10:05:46.9753915Z               "line": 35
2026-06-23T10:05:46.9754000Z             }
2026-06-23T10:05:46.9754196Z           ]
2026-06-23T10:05:46.9754281Z         },
2026-06-23T10:05:46.9754367Z         "int": {
2026-06-23T10:05:46.9754454Z           "complete": false,
2026-06-23T10:05:46.9754544Z           "evidence": []
2026-06-23T10:05:46.9754629Z         },
2026-06-23T10:05:46.9754711Z         "unit": {
2026-06-23T10:05:46.9754811Z           "complete": true,
2026-06-23T10:05:46.9754906Z           "evidence": [
2026-06-23T10:05:46.9754987Z             {
2026-06-23T10:05:46.9755093Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T10:05:46.9755173Z               "line": 220
2026-06-23T10:05:46.9755360Z             }
2026-06-23T10:05:46.9755450Z           ]
2026-06-23T10:05:46.9755536Z         }
2026-06-23T10:05:46.9755622Z       }
2026-06-23T10:05:46.9755708Z     },
2026-06-23T10:05:46.9755793Z     {
2026-06-23T10:05:46.9755902Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-23T10:05:46.9759088Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-23T10:05:46.9759217Z       "requiredStages": [
2026-06-23T10:05:46.9759298Z         "impl",
2026-06-23T10:05:46.9759383Z         "unit",
2026-06-23T10:05:46.9759469Z         "int"
2026-06-23T10:05:46.9759552Z       ],
2026-06-23T10:05:46.9759632Z       "stages": {
2026-06-23T10:05:46.9759717Z         "doc": {
2026-06-23T10:05:46.9759804Z           "complete": false,
2026-06-23T10:05:46.9759890Z           "evidence": []
2026-06-23T10:05:46.9759980Z         },
2026-06-23T10:05:46.9760065Z         "impl": {
2026-06-23T10:05:46.9760152Z           "complete": true,
2026-06-23T10:05:46.9760251Z           "evidence": [
2026-06-23T10:05:46.9760328Z             {
2026-06-23T10:05:46.9760457Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.9760543Z               "line": 398
2026-06-23T10:05:46.9760628Z             },
2026-06-23T10:05:46.9760709Z             {
2026-06-23T10:05:46.9760821Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-23T10:05:46.9760923Z               "line": 107
2026-06-23T10:05:46.9761000Z             },
2026-06-23T10:05:46.9761092Z             {
2026-06-23T10:05:46.9761206Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-23T10:05:46.9761300Z               "line": 138
2026-06-23T10:05:46.9761385Z             },
2026-06-23T10:05:46.9761462Z             {
2026-06-23T10:05:46.9761583Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:46.9761668Z               "line": 209
2026-06-23T10:05:46.9761770Z             },
2026-06-23T10:05:46.9761837Z             {
2026-06-23T10:05:46.9761965Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:46.9762065Z               "line": 246
2026-06-23T10:05:46.9762152Z             },
2026-06-23T10:05:46.9762237Z             {
2026-06-23T10:05:46.9762346Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:46.9762433Z               "line": 382
2026-06-23T10:05:46.9762518Z             }
2026-06-23T10:05:46.9762709Z           ]
2026-06-23T10:05:46.9762795Z         },
2026-06-23T10:05:46.9762876Z         "int": {
2026-06-23T10:05:46.9762971Z           "complete": true,
2026-06-23T10:05:46.9763058Z           "evidence": [
2026-06-23T10:05:46.9763147Z             {
2026-06-23T10:05:46.9763281Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-23T10:05:46.9763368Z               "line": 17
2026-06-23T10:05:46.9763453Z             }
2026-06-23T10:05:46.9763538Z           ]
2026-06-23T10:05:46.9763620Z         },
2026-06-23T10:05:46.9763706Z         "unit": {
2026-06-23T10:05:46.9763796Z           "complete": true,
2026-06-23T10:05:46.9763971Z           "evidence": [
2026-06-23T10:05:46.9764057Z             {
2026-06-23T10:05:46.9764179Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:46.9764274Z               "line": 1083
2026-06-23T10:05:46.9764360Z             }
2026-06-23T10:05:46.9764447Z           ]
2026-06-23T10:05:46.9764531Z         }
2026-06-23T10:05:46.9764612Z       }
2026-06-23T10:05:46.9764704Z     },
2026-06-23T10:05:46.9764790Z     {
2026-06-23T10:05:46.9764899Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-23T10:05:46.9765161Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-23T10:05:46.9765247Z       "requiredStages": [
2026-06-23T10:05:46.9765338Z         "impl",
2026-06-23T10:05:46.9765423Z         "unit"
2026-06-23T10:05:46.9765509Z       ],
2026-06-23T10:05:46.9765596Z       "stages": {
2026-06-23T10:05:46.9765676Z         "doc": {
2026-06-23T10:05:46.9765781Z           "complete": false,
2026-06-23T10:05:46.9765881Z           "evidence": []
2026-06-23T10:05:46.9765968Z         },
2026-06-23T10:05:46.9766057Z         "impl": {
2026-06-23T10:05:46.9766153Z           "complete": true,
2026-06-23T10:05:46.9766249Z           "evidence": [
2026-06-23T10:05:46.9766334Z             {
2026-06-23T10:05:46.9766462Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T10:05:46.9766555Z               "line": 405
2026-06-23T10:05:46.9766640Z             },
2026-06-23T10:05:46.9766719Z             {
2026-06-23T10:05:46.9766843Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:46.9766939Z               "line": 419
2026-06-23T10:05:46.9767025Z             },
2026-06-23T10:05:46.9767110Z             {
2026-06-23T10:05:46.9767235Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T10:05:46.9767321Z               "line": 156
2026-06-23T10:05:46.9767405Z             }
2026-06-23T10:05:46.9767492Z           ]
2026-06-23T10:05:46.9767583Z         },
2026-06-23T10:05:46.9767673Z         "int": {
2026-06-23T10:05:46.9767773Z           "complete": false,
2026-06-23T10:05:46.9767855Z           "evidence": []
2026-06-23T10:05:46.9767945Z         },
2026-06-23T10:05:46.9768021Z         "unit": {
2026-06-23T10:05:46.9768121Z           "complete": true,
2026-06-23T10:05:46.9768217Z           "evidence": [
2026-06-23T10:05:46.9768292Z             {
2026-06-23T10:05:46.9768402Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:46.9768480Z               "line": 875
2026-06-23T10:05:46.9768565Z             },
2026-06-23T10:05:46.9768645Z             {
2026-06-23T10:05:46.9771455Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:46.9771589Z               "line": 889
2026-06-23T10:05:46.9771676Z             },
2026-06-23T10:05:46.9771761Z             {
2026-06-23T10:05:46.9771898Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:46.9771998Z               "line": 908
2026-06-23T10:05:46.9772092Z             },
2026-06-23T10:05:46.9772172Z             {
2026-06-23T10:05:46.9772305Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:46.9772392Z               "line": 925
2026-06-23T10:05:46.9772477Z             },
2026-06-23T10:05:46.9772562Z             {
2026-06-23T10:05:46.9772707Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-23T10:05:46.9772945Z               "line": 441
2026-06-23T10:05:46.9773021Z             }
2026-06-23T10:05:46.9773112Z           ]
2026-06-23T10:05:46.9773197Z         }
2026-06-23T10:05:46.9773284Z       }
2026-06-23T10:05:46.9773369Z     },
2026-06-23T10:05:46.9773455Z     {
2026-06-23T10:05:46.9773570Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-23T10:05:46.9783257Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-23T10:05:46.9783520Z       "requiredStages": [
2026-06-23T10:05:46.9783610Z         "doc",
2026-06-23T10:05:46.9783695Z         "impl",
2026-06-23T10:05:46.9783786Z         "unit",
2026-06-23T10:05:46.9783873Z         "int"
2026-06-23T10:05:46.9783962Z       ],
2026-06-23T10:05:46.9784053Z       "stages": {
2026-06-23T10:05:46.9784135Z         "doc": {
2026-06-23T10:05:46.9784230Z           "complete": true,
2026-06-23T10:05:46.9784315Z           "evidence": [
2026-06-23T10:05:46.9784401Z             {
2026-06-23T10:05:46.9784587Z               "path": "CONTEXT.md",
2026-06-23T10:05:46.9784683Z               "line": 433
2026-06-23T10:05:46.9784755Z             },
2026-06-23T10:05:46.9784846Z             {
2026-06-23T10:05:46.9784954Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9785043Z               "line": 402
2026-06-23T10:05:46.9785135Z             }
2026-06-23T10:05:46.9785210Z           ]
2026-06-23T10:05:46.9785299Z         },
2026-06-23T10:05:46.9785384Z         "impl": {
2026-06-23T10:05:46.9785480Z           "complete": true,
2026-06-23T10:05:46.9785571Z           "evidence": [
2026-06-23T10:05:46.9785661Z             {
2026-06-23T10:05:46.9785876Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9785971Z               "line": 797
2026-06-23T10:05:46.9786052Z             },
2026-06-23T10:05:46.9786134Z             {
2026-06-23T10:05:46.9786257Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9786348Z               "line": 822
2026-06-23T10:05:46.9786439Z             },
2026-06-23T10:05:46.9786529Z             {
2026-06-23T10:05:46.9786643Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9786740Z               "line": 839
2026-06-23T10:05:46.9786825Z             },
2026-06-23T10:05:46.9786911Z             {
2026-06-23T10:05:46.9787031Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9787121Z               "line": 854
2026-06-23T10:05:46.9787206Z             },
2026-06-23T10:05:46.9787287Z             {
2026-06-23T10:05:46.9787403Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9787492Z               "line": 874
2026-06-23T10:05:46.9787583Z             },
2026-06-23T10:05:46.9787670Z             {
2026-06-23T10:05:46.9787783Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9787868Z               "line": 964
2026-06-23T10:05:46.9787954Z             },
2026-06-23T10:05:46.9788040Z             {
2026-06-23T10:05:46.9788154Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9788249Z               "line": 1016
2026-06-23T10:05:46.9788331Z             },
2026-06-23T10:05:46.9788408Z             {
2026-06-23T10:05:46.9788516Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9788598Z               "line": 1075
2026-06-23T10:05:46.9788679Z             },
2026-06-23T10:05:46.9788765Z             {
2026-06-23T10:05:46.9788898Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T10:05:46.9789065Z               "line": 527
2026-06-23T10:05:46.9789151Z             }
2026-06-23T10:05:46.9789251Z           ]
2026-06-23T10:05:46.9789333Z         },
2026-06-23T10:05:46.9789417Z         "int": {
2026-06-23T10:05:46.9789508Z           "complete": true,
2026-06-23T10:05:46.9789591Z           "evidence": [
2026-06-23T10:05:46.9789681Z             {
2026-06-23T10:05:46.9789804Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-23T10:05:46.9789900Z               "line": 35
2026-06-23T10:05:46.9789991Z             },
2026-06-23T10:05:46.9790075Z             {
2026-06-23T10:05:46.9790189Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-23T10:05:46.9790270Z               "line": 569
2026-06-23T10:05:46.9790360Z             },
2026-06-23T10:05:46.9790435Z             {
2026-06-23T10:05:46.9790564Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-23T10:05:46.9790640Z               "line": 590
2026-06-23T10:05:46.9790726Z             }
2026-06-23T10:05:46.9790811Z           ]
2026-06-23T10:05:46.9790897Z         },
2026-06-23T10:05:46.9790978Z         "unit": {
2026-06-23T10:05:46.9791069Z           "complete": true,
2026-06-23T10:05:46.9791154Z           "evidence": [
2026-06-23T10:05:46.9791237Z             {
2026-06-23T10:05:46.9791346Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9791440Z               "line": 1202
2026-06-23T10:05:46.9791527Z             },
2026-06-23T10:05:46.9791608Z             {
2026-06-23T10:05:46.9791818Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9791914Z               "line": 1246
2026-06-23T10:05:46.9791995Z             },
2026-06-23T10:05:46.9792075Z             {
2026-06-23T10:05:46.9792186Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9792275Z               "line": 1260
2026-06-23T10:05:46.9792366Z             },
2026-06-23T10:05:46.9792448Z             {
2026-06-23T10:05:46.9792562Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9792642Z               "line": 1278
2026-06-23T10:05:46.9792729Z             },
2026-06-23T10:05:46.9792914Z             {
2026-06-23T10:05:46.9793028Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9793118Z               "line": 1302
2026-06-23T10:05:46.9793204Z             },
2026-06-23T10:05:46.9793292Z             {
2026-06-23T10:05:46.9793402Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9793489Z               "line": 1529
2026-06-23T10:05:46.9793584Z             }
2026-06-23T10:05:46.9793669Z           ]
2026-06-23T10:05:46.9793755Z         }
2026-06-23T10:05:46.9793836Z       }
2026-06-23T10:05:46.9793922Z     },
2026-06-23T10:05:46.9794007Z     {
2026-06-23T10:05:46.9794128Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-23T10:05:46.9796231Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-23T10:05:46.9796351Z       "requiredStages": [
2026-06-23T10:05:46.9796446Z         "unit",
2026-06-23T10:05:46.9796541Z         "int"
2026-06-23T10:05:46.9796622Z       ],
2026-06-23T10:05:46.9796713Z       "stages": {
2026-06-23T10:05:46.9796803Z         "doc": {
2026-06-23T10:05:46.9796903Z           "complete": true,
2026-06-23T10:05:46.9796995Z           "evidence": [
2026-06-23T10:05:46.9797085Z             {
2026-06-23T10:05:46.9797203Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9797296Z               "line": 381
2026-06-23T10:05:46.9797390Z             }
2026-06-23T10:05:46.9797475Z           ]
2026-06-23T10:05:46.9797567Z         },
2026-06-23T10:05:46.9797653Z         "impl": {
2026-06-23T10:05:46.9797752Z           "complete": true,
2026-06-23T10:05:46.9797847Z           "evidence": [
2026-06-23T10:05:46.9797935Z             {
2026-06-23T10:05:46.9798062Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9798158Z               "line": 101
2026-06-23T10:05:46.9798245Z             }
2026-06-23T10:05:46.9798329Z           ]
2026-06-23T10:05:46.9798424Z         },
2026-06-23T10:05:46.9798514Z         "int": {
2026-06-23T10:05:46.9798610Z           "complete": true,
2026-06-23T10:05:46.9798700Z           "evidence": [
2026-06-23T10:05:46.9798785Z             {
2026-06-23T10:05:46.9798915Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T10:05:46.9799072Z               "line": 1051
2026-06-23T10:05:46.9799163Z             }
2026-06-23T10:05:46.9799249Z           ]
2026-06-23T10:05:46.9799340Z         },
2026-06-23T10:05:46.9799429Z         "unit": {
2026-06-23T10:05:46.9799526Z           "complete": true,
2026-06-23T10:05:46.9799616Z           "evidence": [
2026-06-23T10:05:46.9799701Z             {
2026-06-23T10:05:46.9799816Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9799912Z               "line": 2464
2026-06-23T10:05:46.9800092Z             }
2026-06-23T10:05:46.9800175Z           ]
2026-06-23T10:05:46.9800260Z         }
2026-06-23T10:05:46.9800345Z       }
2026-06-23T10:05:46.9800431Z     },
2026-06-23T10:05:46.9800518Z     {
2026-06-23T10:05:46.9800645Z       "id": "REQ-HAZARD-VIEWER-RING-ROLL-SNAP",
2026-06-23T10:05:46.9804735Z       "title": "A read-only rc --view VIEWER whose serving brain falls behind the live ring under a hard flood and receives a FORWARD Output seq gap (the ring rolled frames out between reads, BEFORE any channel-overflow eviction → NO KIND_VIEWER_EVICTED marker) must SNAP TO LIVE (accept-and-advance via dedup-below + snap-above), NOT fatal with output gap (brain.rs:624/628 legacy reject-gap). ROOT (v0.13.0 forkpty, post-b4+skip-to-live): serve_attach subscribes a viewer via brain.attach_as(Viewer) leaving session_cursors EMPTY → the viewer serve-brain uses the LEGACY reject-gap → a PRE-eviction ring-roll forward-gap FATALS read_event → serve_attach returns → forwarding stops → attach_received_pty_output=FALSE (a_journaled / p0_paste / attach.rs:1071 wedged_viewer, Linux forkpty; Windows ConPTY floods slower → MASKED false-green). DISTINCT from REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT (the POST-eviction re-subscribe-from-floor): this is PRE-eviction gap-tolerance while STILL subscribed. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative); the CONTROLLER keeps strict reject-gap (exactly-once resume). FIX: arm snap-above at initial viewer attach (attach_as_viewer_snap = attach_as(Viewer) + session_cursors.insert(session_id, from_seq)); the two viewer-survival mechanisms COMPOSE — this tolerates pre-eviction ring-roll gaps, REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT recovers post-eviction. (v0.13.0)",
2026-06-23T10:05:46.9804950Z       "requiredStages": [
2026-06-23T10:05:46.9805031Z         "doc",
2026-06-23T10:05:46.9805112Z         "impl",
2026-06-23T10:05:46.9805197Z         "unit",
2026-06-23T10:05:46.9805284Z         "int"
2026-06-23T10:05:46.9805369Z       ],
2026-06-23T10:05:46.9805469Z       "stages": {
2026-06-23T10:05:46.9805545Z         "doc": {
2026-06-23T10:05:46.9805647Z           "complete": true,
2026-06-23T10:05:46.9805721Z           "evidence": [
2026-06-23T10:05:46.9805812Z             {
2026-06-23T10:05:46.9805909Z               "path": "CONTEXT.md",
2026-06-23T10:05:46.9806004Z               "line": 355
2026-06-23T10:05:46.9806088Z             }
2026-06-23T10:05:46.9806168Z           ]
2026-06-23T10:05:46.9806259Z         },
2026-06-23T10:05:46.9806340Z         "impl": {
2026-06-23T10:05:46.9806438Z           "complete": true,
2026-06-23T10:05:46.9806529Z           "evidence": [
2026-06-23T10:05:46.9806625Z             {
2026-06-23T10:05:46.9806753Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T10:05:46.9806839Z               "line": 333
2026-06-23T10:05:46.9806926Z             },
2026-06-23T10:05:46.9807011Z             {
2026-06-23T10:05:46.9807120Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9807207Z               "line": 892
2026-06-23T10:05:46.9807297Z             }
2026-06-23T10:05:46.9807382Z           ]
2026-06-23T10:05:46.9807468Z         },
2026-06-23T10:05:46.9807546Z         "int": {
2026-06-23T10:05:46.9807625Z           "complete": true,
2026-06-23T10:05:46.9807725Z           "evidence": [
2026-06-23T10:05:46.9807812Z             {
2026-06-23T10:05:46.9807959Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T10:05:46.9808045Z               "line": 872
2026-06-23T10:05:46.9808127Z             },
2026-06-23T10:05:46.9808213Z             {
2026-06-23T10:05:46.9808355Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T10:05:46.9808442Z               "line": 2168
2026-06-23T10:05:46.9808528Z             }
2026-06-23T10:05:46.9808612Z           ]
2026-06-23T10:05:46.9808703Z         },
2026-06-23T10:05:46.9808781Z         "unit": {
2026-06-23T10:05:46.9808871Z           "complete": true,
2026-06-23T10:05:46.9809031Z           "evidence": [
2026-06-23T10:05:46.9809232Z             {
2026-06-23T10:05:46.9809355Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:46.9809437Z               "line": 1710
2026-06-23T10:05:46.9809523Z             }
2026-06-23T10:05:46.9809613Z           ]
2026-06-23T10:05:46.9809698Z         }
2026-06-23T10:05:46.9809786Z       }
2026-06-23T10:05:46.9809866Z     },
2026-06-23T10:05:46.9809951Z     {
2026-06-23T10:05:46.9810124Z       "id": "REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE",
2026-06-23T10:05:46.9815243Z       "title": "A SLOW controller must not starve a concurrent `rc --view` VIEWER. W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST) moved the controller SOCKET WRITE off the drain thread onto controller_writer, but left the bounded HANDOFF (ControllerJob::deliver) as an INLINE try_send SLEEP-POLL on the drain (broker.rs:1450-1457 → deliver:669-685, up to CONTROLLER_WRITE_DEADLINE=5s). So when a controller drains slower than the PTY floods, its CONTROLLER_CHANNEL_DEPTH(4096) channel fills, deliver() polls inline, and the DRAIN THREAD is throttled to the controller's read rate → OutputLog::append's viewer fan-out (try_send) stops running → a concurrent VIEWER receives only the initial replay then nothing (root 'b4', warm forkpty: a_journaled c1=0/EVICT=0/got_output=FALSE; steady-state-near-full = no recovery; forkpty-only, floods harder than Windows ConPTY). The viewer-not-starved-by-a-busy-session property is legitimate (rc --view of a noisy session must show LIVE output). FIX: the controller becomes a SINGLE NON-BLOCKING try_send (like a viewer), done IN append() under the log lock; deliver()'s sleep-poll DELETED; the drain NEVER sleeps. ControllerSink gains a stateful last_ok deadline → a TRULY-stalled controller (continuous-Full past CONTROLLER_WRITE_DEADLINE) is evicted (bounded-wedge preserved); a slow-but-alive controller DROPS frames + falls behind the ring (resume-from-floor, the existing reconnect case). B2 GAPLESS-HANDOFF PRESERVED via a CONTIGUOUS delivered_through: controller_writer advances the cursor ONLY when the written seq == cursor (next expected); a gap from a drop FREEZES the cursor at last-contiguous so a re-attaching brain's resume_seq never skips a dropped chunk (a high-watermark advance past the gap would be a not-exactly-once resume = B2 violation, doyle's gate). (v0.13.0)",
2026-06-23T10:05:46.9815481Z       "requiredStages": [
2026-06-23T10:05:46.9815563Z         "impl",
2026-06-23T10:05:46.9815647Z         "unit",
2026-06-23T10:05:46.9815733Z         "int"
2026-06-23T10:05:46.9815820Z       ],
2026-06-23T10:05:46.9815901Z       "stages": {
2026-06-23T10:05:46.9815981Z         "doc": {
2026-06-23T10:05:46.9816091Z           "complete": false,
2026-06-23T10:05:46.9816173Z           "evidence": []
2026-06-23T10:05:46.9816268Z         },
2026-06-23T10:05:46.9816354Z         "impl": {
2026-06-23T10:05:46.9816450Z           "complete": true,
2026-06-23T10:05:46.9816550Z           "evidence": [
2026-06-23T10:05:46.9816624Z             {
2026-06-23T10:05:46.9816747Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9816843Z               "line": 323
2026-06-23T10:05:46.9816932Z             },
2026-06-23T10:05:46.9817012Z             {
2026-06-23T10:05:46.9817122Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9817219Z               "line": 745
2026-06-23T10:05:46.9817294Z             }
2026-06-23T10:05:46.9817379Z           ]
2026-06-23T10:05:46.9817462Z         },
2026-06-23T10:05:46.9817547Z         "int": {
2026-06-23T10:05:46.9817637Z           "complete": true,
2026-06-23T10:05:46.9817733Z           "evidence": [
2026-06-23T10:05:46.9817824Z             {
2026-06-23T10:05:46.9817966Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T10:05:46.9818063Z               "line": 871
2026-06-23T10:05:46.9818144Z             }
2026-06-23T10:05:46.9818229Z           ]
2026-06-23T10:05:46.9818310Z         },
2026-06-23T10:05:46.9818401Z         "unit": {
2026-06-23T10:05:46.9818496Z           "complete": true,
2026-06-23T10:05:46.9818653Z           "evidence": [
2026-06-23T10:05:46.9818740Z             {
2026-06-23T10:05:46.9818848Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9819026Z               "line": 2679
2026-06-23T10:05:46.9819107Z             },
2026-06-23T10:05:46.9819196Z             {
2026-06-23T10:05:46.9819317Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:46.9819408Z               "line": 2748
2026-06-23T10:05:46.9819487Z             }
2026-06-23T10:05:46.9819568Z           ]
2026-06-23T10:05:46.9819649Z         }
2026-06-23T10:05:46.9819849Z       }
2026-06-23T10:05:46.9819934Z     },
2026-06-23T10:05:46.9820016Z     {
2026-06-23T10:05:46.9820126Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-23T10:05:46.9820902Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-23T10:05:46.9821008Z       "requiredStages": [
2026-06-23T10:05:46.9821103Z         "doc",
2026-06-23T10:05:46.9821198Z         "impl",
2026-06-23T10:05:46.9821281Z         "unit"
2026-06-23T10:05:46.9821366Z       ],
2026-06-23T10:05:46.9821441Z       "stages": {
2026-06-23T10:05:46.9821537Z         "doc": {
2026-06-23T10:05:46.9821615Z           "complete": true,
2026-06-23T10:05:46.9821708Z           "evidence": [
2026-06-23T10:05:46.9821789Z             {
2026-06-23T10:05:46.9821898Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9822007Z               "line": 366
2026-06-23T10:05:46.9822087Z             }
2026-06-23T10:05:46.9822167Z           ]
2026-06-23T10:05:46.9822244Z         },
2026-06-23T10:05:46.9822326Z         "impl": {
2026-06-23T10:05:46.9822425Z           "complete": true,
2026-06-23T10:05:46.9822516Z           "evidence": [
2026-06-23T10:05:46.9822602Z             {
2026-06-23T10:05:46.9822716Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-23T10:05:46.9822811Z               "line": 87
2026-06-23T10:05:46.9822903Z             },
2026-06-23T10:05:46.9822988Z             {
2026-06-23T10:05:46.9823097Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T10:05:46.9823184Z               "line": 203
2026-06-23T10:05:46.9823274Z             },
2026-06-23T10:05:46.9823364Z             {
2026-06-23T10:05:46.9823489Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T10:05:46.9823580Z               "line": 55
2026-06-23T10:05:46.9823670Z             },
2026-06-23T10:05:46.9823764Z             {
2026-06-23T10:05:46.9823880Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:46.9823965Z               "line": 31
2026-06-23T10:05:46.9824051Z             },
2026-06-23T10:05:46.9824133Z             {
2026-06-23T10:05:46.9824242Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:46.9824342Z               "line": 446
2026-06-23T10:05:46.9824419Z             },
2026-06-23T10:05:46.9824505Z             {
2026-06-23T10:05:46.9824637Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T10:05:46.9824722Z               "line": 95
2026-06-23T10:05:46.9824813Z             },
2026-06-23T10:05:46.9824898Z             {
2026-06-23T10:05:46.9825025Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T10:05:46.9825111Z               "line": 29
2026-06-23T10:05:46.9825198Z             },
2026-06-23T10:05:46.9825283Z             {
2026-06-23T10:05:46.9825397Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T10:05:46.9825498Z               "line": 104
2026-06-23T10:05:46.9825584Z             },
2026-06-23T10:05:46.9825668Z             {
2026-06-23T10:05:46.9825794Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9825879Z               "line": 208
2026-06-23T10:05:46.9825969Z             },
2026-06-23T10:05:46.9826050Z             {
2026-06-23T10:05:46.9826279Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-23T10:05:46.9826365Z               "line": 28
2026-06-23T10:05:46.9826461Z             },
2026-06-23T10:05:46.9826550Z             {
2026-06-23T10:05:46.9826671Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-23T10:05:46.9826767Z               "line": 74
2026-06-23T10:05:46.9826856Z             },
2026-06-23T10:05:46.9826937Z             {
2026-06-23T10:05:46.9827058Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-23T10:05:46.9827148Z               "line": 32
2026-06-23T10:05:46.9827241Z             },
2026-06-23T10:05:46.9827394Z             {
2026-06-23T10:05:46.9827507Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T10:05:46.9827592Z               "line": 40
2026-06-23T10:05:46.9827673Z             },
2026-06-23T10:05:46.9827759Z             {
2026-06-23T10:05:46.9827868Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T10:05:46.9827959Z               "line": 184
2026-06-23T10:05:46.9828051Z             },
2026-06-23T10:05:46.9828141Z             {
2026-06-23T10:05:46.9828245Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-23T10:05:46.9828337Z               "line": 61
2026-06-23T10:05:46.9828426Z             },
2026-06-23T10:05:46.9828512Z             {
2026-06-23T10:05:46.9828628Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-23T10:05:46.9828713Z               "line": 131
2026-06-23T10:05:46.9828794Z             },
2026-06-23T10:05:46.9828879Z             {
2026-06-23T10:05:46.9829065Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-23T10:05:46.9829170Z               "line": 223
2026-06-23T10:05:46.9829252Z             },
2026-06-23T10:05:46.9829334Z             {
2026-06-23T10:05:46.9829442Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-23T10:05:46.9829528Z               "line": 37
2026-06-23T10:05:46.9829610Z             },
2026-06-23T10:05:46.9829695Z             {
2026-06-23T10:05:46.9829823Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-23T10:05:46.9829915Z               "line": 38
2026-06-23T10:05:46.9830006Z             },
2026-06-23T10:05:46.9830080Z             {
2026-06-23T10:05:46.9830204Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-23T10:05:46.9830291Z               "line": 36
2026-06-23T10:05:46.9830376Z             },
2026-06-23T10:05:46.9830461Z             {
2026-06-23T10:05:46.9830566Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-23T10:05:46.9830652Z               "line": 40
2026-06-23T10:05:46.9830733Z             }
2026-06-23T10:05:46.9830833Z           ]
2026-06-23T10:05:46.9830916Z         },
2026-06-23T10:05:46.9831001Z         "int": {
2026-06-23T10:05:46.9831100Z           "complete": false,
2026-06-23T10:05:46.9831187Z           "evidence": []
2026-06-23T10:05:46.9831268Z         },
2026-06-23T10:05:46.9831354Z         "unit": {
2026-06-23T10:05:46.9831449Z           "complete": true,
2026-06-23T10:05:46.9831535Z           "evidence": [
2026-06-23T10:05:46.9831615Z             {
2026-06-23T10:05:46.9831744Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T10:05:46.9831836Z               "line": 212
2026-06-23T10:05:46.9831926Z             },
2026-06-23T10:05:46.9832006Z             {
2026-06-23T10:05:46.9832136Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-23T10:05:46.9832227Z               "line": 136
2026-06-23T10:05:46.9832311Z             },
2026-06-23T10:05:46.9832401Z             {
2026-06-23T10:05:46.9832516Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-23T10:05:46.9832614Z               "line": 685
2026-06-23T10:05:46.9832699Z             },
2026-06-23T10:05:46.9832785Z             {
2026-06-23T10:05:46.9832901Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-23T10:05:46.9832995Z               "line": 224
2026-06-23T10:05:46.9833081Z             },
2026-06-23T10:05:46.9833158Z             {
2026-06-23T10:05:46.9833385Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-23T10:05:46.9833473Z               "line": 206
2026-06-23T10:05:46.9833558Z             },
2026-06-23T10:05:46.9833643Z             {
2026-06-23T10:05:46.9833764Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-23T10:05:46.9833858Z               "line": 112
2026-06-23T10:05:46.9833944Z             },
2026-06-23T10:05:46.9834020Z             {
2026-06-23T10:05:46.9834135Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-23T10:05:46.9834221Z               "line": 157
2026-06-23T10:05:46.9834311Z             },
2026-06-23T10:05:46.9834497Z             {
2026-06-23T10:05:46.9834616Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-23T10:05:46.9834703Z               "line": 215
2026-06-23T10:05:46.9834784Z             },
2026-06-23T10:05:46.9834868Z             {
2026-06-23T10:05:46.9834989Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-23T10:05:46.9835075Z               "line": 141
2026-06-23T10:05:46.9835164Z             },
2026-06-23T10:05:46.9835254Z             {
2026-06-23T10:05:46.9835369Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-23T10:05:46.9835467Z               "line": 162
2026-06-23T10:05:46.9835552Z             }
2026-06-23T10:05:46.9835638Z           ]
2026-06-23T10:05:46.9835729Z         }
2026-06-23T10:05:46.9835805Z       }
2026-06-23T10:05:46.9835895Z     },
2026-06-23T10:05:46.9835971Z     {
2026-06-23T10:05:46.9836101Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-23T10:05:46.9837906Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-23T10:05:46.9838020Z       "requiredStages": [
2026-06-23T10:05:46.9838104Z         "doc",
2026-06-23T10:05:46.9838190Z         "impl",
2026-06-23T10:05:46.9838276Z         "unit",
2026-06-23T10:05:46.9838358Z         "int"
2026-06-23T10:05:46.9838443Z       ],
2026-06-23T10:05:46.9838538Z       "stages": {
2026-06-23T10:05:46.9838625Z         "doc": {
2026-06-23T10:05:46.9838715Z           "complete": true,
2026-06-23T10:05:46.9838800Z           "evidence": [
2026-06-23T10:05:46.9838887Z             {
2026-06-23T10:05:46.9839077Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:46.9839163Z               "line": 250
2026-06-23T10:05:46.9839254Z             }
2026-06-23T10:05:46.9839339Z           ]
2026-06-23T10:05:46.9839430Z         },
2026-06-23T10:05:46.9839517Z         "impl": {
2026-06-23T10:05:46.9839617Z           "complete": true,
2026-06-23T10:05:46.9839707Z           "evidence": [
2026-06-23T10:05:46.9839788Z             {
2026-06-23T10:05:46.9839908Z               "path": "crates/spt-term/src/pty.rs",
2026-06-23T10:05:46.9839992Z               "line": 135
2026-06-23T10:05:46.9840074Z             },
2026-06-23T10:05:46.9840156Z             {
2026-06-23T10:05:46.9840274Z               "path": "crates/spt-term/src/pty.rs",
2026-06-23T10:05:46.9840365Z               "line": 157
2026-06-23T10:05:46.9840447Z             }
2026-06-23T10:05:46.9840538Z           ]
2026-06-23T10:05:46.9840626Z         },
2026-06-23T10:05:46.9840716Z         "int": {
2026-06-23T10:05:46.9840807Z           "complete": true,
2026-06-23T10:05:46.9840909Z           "evidence": [
2026-06-23T10:05:46.9840997Z             {
2026-06-23T10:05:46.9841117Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-23T10:05:46.9841203Z               "line": 15
2026-06-23T10:05:46.9841289Z             }
2026-06-23T10:05:46.9841495Z           ]
2026-06-23T10:05:46.9841571Z         },
2026-06-23T10:05:46.9841660Z         "unit": {
2026-06-23T10:05:46.9841757Z           "complete": true,
2026-06-23T10:05:46.9841838Z           "evidence": [
2026-06-23T10:05:46.9841928Z             {
2026-06-23T10:05:46.9842042Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-23T10:05:46.9842129Z               "line": 233
2026-06-23T10:05:46.9842213Z             }
2026-06-23T10:05:46.9842304Z           ]
2026-06-23T10:05:46.9842391Z         }
2026-06-23T10:05:46.9842463Z       }
2026-06-23T10:05:46.9842542Z     },
2026-06-23T10:05:46.9842725Z     {
2026-06-23T10:05:46.9842871Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-23T10:05:46.9843033Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-23T10:05:46.9843132Z       "requiredStages": [
2026-06-23T10:05:46.9843221Z         "impl",
2026-06-23T10:05:46.9843306Z         "unit"
2026-06-23T10:05:46.9843398Z       ],
2026-06-23T10:05:46.9843484Z       "stages": {
2026-06-23T10:05:46.9843574Z         "doc": {
2026-06-23T10:05:46.9843669Z           "complete": false,
2026-06-23T10:05:46.9843765Z           "evidence": []
2026-06-23T10:05:46.9843850Z         },
2026-06-23T10:05:46.9843927Z         "impl": {
2026-06-23T10:05:46.9844014Z           "complete": true,
2026-06-23T10:05:46.9844094Z           "evidence": [
2026-06-23T10:05:46.9844184Z             {
2026-06-23T10:05:46.9844304Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T10:05:46.9844394Z               "line": 95
2026-06-23T10:05:46.9844485Z             },
2026-06-23T10:05:46.9844570Z             {
2026-06-23T10:05:46.9844691Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:46.9844771Z               "line": 117
2026-06-23T10:05:46.9844861Z             }
2026-06-23T10:05:46.9844948Z           ]
2026-06-23T10:05:46.9845034Z         },
2026-06-23T10:05:46.9845124Z         "int": {
2026-06-23T10:05:46.9845214Z           "complete": false,
2026-06-23T10:05:46.9845311Z           "evidence": []
2026-06-23T10:05:46.9845400Z         },
2026-06-23T10:05:46.9845486Z         "unit": {
2026-06-23T10:05:46.9845582Z           "complete": true,
2026-06-23T10:05:46.9845668Z           "evidence": [
2026-06-23T10:05:46.9845753Z             {
2026-06-23T10:05:46.9845861Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T10:05:46.9845953Z               "line": 250
2026-06-23T10:05:46.9846036Z             },
2026-06-23T10:05:46.9846131Z             {
2026-06-23T10:05:46.9846246Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T10:05:46.9846332Z               "line": 412
2026-06-23T10:05:46.9846431Z             },
2026-06-23T10:05:46.9846512Z             {
2026-06-23T10:05:46.9846633Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:46.9846713Z               "line": 611
2026-06-23T10:05:46.9846803Z             },
2026-06-23T10:05:46.9846895Z             {
2026-06-23T10:05:46.9847004Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:46.9847109Z               "line": 669
2026-06-23T10:05:46.9847195Z             }
2026-06-23T10:05:46.9847281Z           ]
2026-06-23T10:05:46.9847366Z         }
2026-06-23T10:05:46.9847452Z       }
2026-06-23T10:05:46.9847535Z     },
2026-06-23T10:05:46.9847619Z     {
2026-06-23T10:05:46.9847729Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-23T10:05:46.9850210Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-23T10:05:46.9850444Z       "requiredStages": [
2026-06-23T10:05:46.9850529Z         "impl",
2026-06-23T10:05:46.9850619Z         "unit",
2026-06-23T10:05:46.9850712Z         "int"
2026-06-23T10:05:46.9850787Z       ],
2026-06-23T10:05:46.9850877Z       "stages": {
2026-06-23T10:05:46.9850963Z         "doc": {
2026-06-23T10:05:46.9851060Z           "complete": false,
2026-06-23T10:05:46.9851253Z           "evidence": []
2026-06-23T10:05:46.9851329Z         },
2026-06-23T10:05:46.9851416Z         "impl": {
2026-06-23T10:05:46.9851506Z           "complete": true,
2026-06-23T10:05:46.9851600Z           "evidence": [
2026-06-23T10:05:46.9851682Z             {
2026-06-23T10:05:46.9851812Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9851910Z               "line": 925
2026-06-23T10:05:46.9852002Z             },
2026-06-23T10:05:46.9852083Z             {
2026-06-23T10:05:46.9852197Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9852292Z               "line": 994
2026-06-23T10:05:46.9852379Z             }
2026-06-23T10:05:46.9852464Z           ]
2026-06-23T10:05:46.9852549Z         },
2026-06-23T10:05:46.9852637Z         "int": {
2026-06-23T10:05:46.9852732Z           "complete": true,
2026-06-23T10:05:46.9852813Z           "evidence": [
2026-06-23T10:05:46.9852898Z             {
2026-06-23T10:05:46.9853027Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-23T10:05:46.9853121Z               "line": 187
2026-06-23T10:05:46.9853203Z             },
2026-06-23T10:05:46.9853285Z             {
2026-06-23T10:05:46.9853403Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-23T10:05:46.9853488Z               "line": 348
2026-06-23T10:05:46.9853579Z             }
2026-06-23T10:05:46.9853650Z           ]
2026-06-23T10:05:46.9853725Z         },
2026-06-23T10:05:46.9853810Z         "unit": {
2026-06-23T10:05:46.9853901Z           "complete": true,
2026-06-23T10:05:46.9853992Z           "evidence": [
2026-06-23T10:05:46.9854072Z             {
2026-06-23T10:05:46.9854196Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:46.9854283Z               "line": 1206
2026-06-23T10:05:46.9854359Z             },
2026-06-23T10:05:46.9854453Z             {
2026-06-23T10:05:46.9854559Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9854649Z               "line": 9510
2026-06-23T10:05:46.9854735Z             }
2026-06-23T10:05:46.9854821Z           ]
2026-06-23T10:05:46.9854898Z         }
2026-06-23T10:05:46.9854983Z       }
2026-06-23T10:05:46.9855068Z     },
2026-06-23T10:05:46.9855149Z     {
2026-06-23T10:05:46.9855261Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-23T10:05:46.9855436Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-23T10:05:46.9855542Z       "requiredStages": [
2026-06-23T10:05:46.9855626Z         "impl",
2026-06-23T10:05:46.9855708Z         "unit"
2026-06-23T10:05:46.9855794Z       ],
2026-06-23T10:05:46.9855881Z       "stages": {
2026-06-23T10:05:46.9855969Z         "doc": {
2026-06-23T10:05:46.9856061Z           "complete": false,
2026-06-23T10:05:46.9856148Z           "evidence": []
2026-06-23T10:05:46.9856238Z         },
2026-06-23T10:05:46.9856327Z         "impl": {
2026-06-23T10:05:46.9856426Z           "complete": true,
2026-06-23T10:05:46.9856513Z           "evidence": [
2026-06-23T10:05:46.9856601Z             {
2026-06-23T10:05:46.9856724Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9856811Z               "line": 262
2026-06-23T10:05:46.9856897Z             },
2026-06-23T10:05:46.9856982Z             {
2026-06-23T10:05:46.9857097Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9857183Z               "line": 307
2026-06-23T10:05:46.9857264Z             },
2026-06-23T10:05:46.9857426Z             {
2026-06-23T10:05:46.9857545Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9857640Z               "line": 319
2026-06-23T10:05:46.9857722Z             }
2026-06-23T10:05:46.9857808Z           ]
2026-06-23T10:05:46.9857888Z         },
2026-06-23T10:05:46.9857984Z         "int": {
2026-06-23T10:05:46.9858070Z           "complete": false,
2026-06-23T10:05:46.9858165Z           "evidence": []
2026-06-23T10:05:46.9858250Z         },
2026-06-23T10:05:46.9858336Z         "unit": {
2026-06-23T10:05:46.9858433Z           "complete": true,
2026-06-23T10:05:46.9858589Z           "evidence": [
2026-06-23T10:05:46.9858681Z             {
2026-06-23T10:05:46.9858790Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9858880Z               "line": 455
2026-06-23T10:05:46.9859056Z             },
2026-06-23T10:05:46.9859140Z             {
2026-06-23T10:05:46.9859258Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:46.9859358Z               "line": 499
2026-06-23T10:05:46.9859445Z             }
2026-06-23T10:05:46.9859516Z           ]
2026-06-23T10:05:46.9859596Z         }
2026-06-23T10:05:46.9862208Z       }
2026-06-23T10:05:46.9862329Z     },
2026-06-23T10:05:46.9862414Z     {
2026-06-23T10:05:46.9862519Z       "id": "REQ-HOST-RUN-1",
2026-06-23T10:05:46.9864904Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-23T10:05:46.9865037Z       "requiredStages": [
2026-06-23T10:05:46.9865124Z         "impl",
2026-06-23T10:05:46.9865214Z         "unit",
2026-06-23T10:05:46.9865300Z         "int"
2026-06-23T10:05:46.9865381Z       ],
2026-06-23T10:05:46.9865477Z       "stages": {
2026-06-23T10:05:46.9865553Z         "doc": {
2026-06-23T10:05:46.9865647Z           "complete": false,
2026-06-23T10:05:46.9865734Z           "evidence": []
2026-06-23T10:05:46.9865825Z         },
2026-06-23T10:05:46.9865911Z         "impl": {
2026-06-23T10:05:46.9866010Z           "complete": true,
2026-06-23T10:05:46.9866097Z           "evidence": [
2026-06-23T10:05:46.9866182Z             {
2026-06-23T10:05:46.9866325Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T10:05:46.9866407Z               "line": 30
2026-06-23T10:05:46.9866493Z             },
2026-06-23T10:05:46.9866578Z             {
2026-06-23T10:05:46.9866713Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T10:05:46.9866812Z               "line": 76
2026-06-23T10:05:46.9866896Z             },
2026-06-23T10:05:46.9866986Z             {
2026-06-23T10:05:46.9867101Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T10:05:46.9867190Z               "line": 181
2026-06-23T10:05:46.9867285Z             },
2026-06-23T10:05:46.9867371Z             {
2026-06-23T10:05:46.9867477Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9867561Z               "line": 1336
2026-06-23T10:05:46.9867647Z             }
2026-06-23T10:05:46.9867739Z           ]
2026-06-23T10:05:46.9867815Z         },
2026-06-23T10:05:46.9867900Z         "int": {
2026-06-23T10:05:46.9867991Z           "complete": true,
2026-06-23T10:05:46.9868086Z           "evidence": [
2026-06-23T10:05:46.9868158Z             {
2026-06-23T10:05:46.9868286Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T10:05:46.9868373Z               "line": 290
2026-06-23T10:05:46.9868596Z             }
2026-06-23T10:05:46.9868683Z           ]
2026-06-23T10:05:46.9868758Z         },
2026-06-23T10:05:46.9868853Z         "unit": {
2026-06-23T10:05:46.9869031Z           "complete": true,
2026-06-23T10:05:46.9869125Z           "evidence": [
2026-06-23T10:05:46.9869216Z             {
2026-06-23T10:05:46.9869341Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T10:05:46.9869430Z               "line": 235
2026-06-23T10:05:46.9869510Z             },
2026-06-23T10:05:46.9869596Z             {
2026-06-23T10:05:46.9869714Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T10:05:46.9869904Z               "line": 302
2026-06-23T10:05:46.9870029Z             },
2026-06-23T10:05:46.9870133Z             {
2026-06-23T10:05:46.9870263Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T10:05:46.9870348Z               "line": 425
2026-06-23T10:05:46.9870438Z             }
2026-06-23T10:05:46.9870524Z           ]
2026-06-23T10:05:46.9870610Z         }
2026-06-23T10:05:46.9870696Z       }
2026-06-23T10:05:46.9870776Z     },
2026-06-23T10:05:46.9870863Z     {
2026-06-23T10:05:46.9870958Z       "id": "REQ-HOST-RUN-2",
2026-06-23T10:05:46.9872617Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-23T10:05:46.9872725Z       "requiredStages": [
2026-06-23T10:05:46.9872817Z         "impl",
2026-06-23T10:05:46.9872908Z         "unit",
2026-06-23T10:05:46.9872993Z         "int"
2026-06-23T10:05:46.9873079Z       ],
2026-06-23T10:05:46.9873160Z       "stages": {
2026-06-23T10:05:46.9873236Z         "doc": {
2026-06-23T10:05:46.9873331Z           "complete": false,
2026-06-23T10:05:46.9873417Z           "evidence": []
2026-06-23T10:05:46.9873503Z         },
2026-06-23T10:05:46.9873589Z         "impl": {
2026-06-23T10:05:46.9873679Z           "complete": true,
2026-06-23T10:05:46.9873767Z           "evidence": [
2026-06-23T10:05:46.9873852Z             {
2026-06-23T10:05:46.9873985Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T10:05:46.9874082Z               "line": 182
2026-06-23T10:05:46.9874162Z             },
2026-06-23T10:05:46.9874246Z             {
2026-06-23T10:05:46.9874367Z               "path": "crates/spt-term/src/pty.rs",
2026-06-23T10:05:46.9874462Z               "line": 113
2026-06-23T10:05:46.9874552Z             }
2026-06-23T10:05:46.9874642Z           ]
2026-06-23T10:05:46.9874713Z         },
2026-06-23T10:05:46.9874803Z         "int": {
2026-06-23T10:05:46.9874888Z           "complete": true,
2026-06-23T10:05:46.9874973Z           "evidence": [
2026-06-23T10:05:46.9875059Z             {
2026-06-23T10:05:46.9875178Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T10:05:46.9875273Z               "line": 579
2026-06-23T10:05:46.9875360Z             }
2026-06-23T10:05:46.9875450Z           ]
2026-06-23T10:05:46.9875531Z         },
2026-06-23T10:05:46.9875621Z         "unit": {
2026-06-23T10:05:46.9875718Z           "complete": true,
2026-06-23T10:05:46.9875803Z           "evidence": [
2026-06-23T10:05:46.9875893Z             {
2026-06-23T10:05:46.9876013Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-23T10:05:46.9876108Z               "line": 86
2026-06-23T10:05:46.9876199Z             }
2026-06-23T10:05:46.9876294Z           ]
2026-06-23T10:05:46.9876385Z         }
2026-06-23T10:05:46.9876466Z       }
2026-06-23T10:05:46.9876662Z     },
2026-06-23T10:05:46.9876747Z     {
2026-06-23T10:05:46.9876847Z       "id": "REQ-INFRA-1",
2026-06-23T10:05:46.9877034Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-23T10:05:46.9877138Z       "requiredStages": [],
2026-06-23T10:05:46.9877224Z       "stages": {
2026-06-23T10:05:46.9877306Z         "doc": {
2026-06-23T10:05:46.9877396Z           "complete": false,
2026-06-23T10:05:46.9877480Z           "evidence": []
2026-06-23T10:05:46.9877571Z         },
2026-06-23T10:05:46.9877657Z         "impl": {
2026-06-23T10:05:46.9877745Z           "complete": false,
2026-06-23T10:05:46.9877917Z           "evidence": []
2026-06-23T10:05:46.9878003Z         },
2026-06-23T10:05:46.9878093Z         "int": {
2026-06-23T10:05:46.9878183Z           "complete": false,
2026-06-23T10:05:46.9878280Z           "evidence": []
2026-06-23T10:05:46.9878366Z         },
2026-06-23T10:05:46.9878450Z         "unit": {
2026-06-23T10:05:46.9878551Z           "complete": false,
2026-06-23T10:05:46.9878646Z           "evidence": []
2026-06-23T10:05:46.9878727Z         }
2026-06-23T10:05:46.9878813Z       }
2026-06-23T10:05:46.9878895Z     },
2026-06-23T10:05:46.9879056Z     {
2026-06-23T10:05:46.9879156Z       "id": "REQ-INST-1",
2026-06-23T10:05:46.9879318Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-23T10:05:46.9879413Z       "requiredStages": [],
2026-06-23T10:05:46.9879506Z       "stages": {
2026-06-23T10:05:46.9879582Z         "doc": {
2026-06-23T10:05:46.9879671Z           "complete": false,
2026-06-23T10:05:46.9879752Z           "evidence": []
2026-06-23T10:05:46.9879849Z         },
2026-06-23T10:05:46.9879934Z         "impl": {
2026-06-23T10:05:46.9880018Z           "complete": false,
2026-06-23T10:05:46.9880123Z           "evidence": []
2026-06-23T10:05:46.9880209Z         },
2026-06-23T10:05:46.9880302Z         "int": {
2026-06-23T10:05:46.9880397Z           "complete": false,
2026-06-23T10:05:46.9880493Z           "evidence": []
2026-06-23T10:05:46.9880585Z         },
2026-06-23T10:05:46.9880664Z         "unit": {
2026-06-23T10:05:46.9880760Z           "complete": false,
2026-06-23T10:05:46.9880851Z           "evidence": []
2026-06-23T10:05:46.9880928Z         }
2026-06-23T10:05:46.9881017Z       }
2026-06-23T10:05:46.9881089Z     },
2026-06-23T10:05:46.9881180Z     {
2026-06-23T10:05:46.9881280Z       "id": "REQ-INST-10",
2026-06-23T10:05:46.9881486Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-23T10:05:46.9881585Z       "requiredStages": [
2026-06-23T10:05:46.9881690Z         "impl",
2026-06-23T10:05:46.9881777Z         "unit"
2026-06-23T10:05:46.9881861Z       ],
2026-06-23T10:05:46.9881947Z       "stages": {
2026-06-23T10:05:46.9882028Z         "doc": {
2026-06-23T10:05:46.9882130Z           "complete": false,
2026-06-23T10:05:46.9882218Z           "evidence": []
2026-06-23T10:05:46.9882305Z         },
2026-06-23T10:05:46.9882401Z         "impl": {
2026-06-23T10:05:46.9882495Z           "complete": true,
2026-06-23T10:05:46.9882581Z           "evidence": [
2026-06-23T10:05:46.9882668Z             {
2026-06-23T10:05:46.9882797Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9882881Z               "line": 648
2026-06-23T10:05:46.9882966Z             },
2026-06-23T10:05:46.9883053Z             {
2026-06-23T10:05:46.9883177Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9883271Z               "line": 725
2026-06-23T10:05:46.9883348Z             },
2026-06-23T10:05:46.9883435Z             {
2026-06-23T10:05:46.9883543Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-23T10:05:46.9883649Z               "line": 13
2026-06-23T10:05:46.9883725Z             },
2026-06-23T10:05:46.9883811Z             {
2026-06-23T10:05:46.9883929Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-23T10:05:46.9884012Z               "line": 67
2026-06-23T10:05:46.9884092Z             },
2026-06-23T10:05:46.9884312Z             {
2026-06-23T10:05:46.9884430Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T10:05:46.9884511Z               "line": 18
2026-06-23T10:05:46.9884598Z             },
2026-06-23T10:05:46.9884679Z             {
2026-06-23T10:05:46.9884783Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T10:05:46.9884898Z               "line": 444
2026-06-23T10:05:46.9884980Z             }
2026-06-23T10:05:46.9885074Z           ]
2026-06-23T10:05:46.9885154Z         },
2026-06-23T10:05:46.9885240Z         "int": {
2026-06-23T10:05:46.9885340Z           "complete": false,
2026-06-23T10:05:46.9885528Z           "evidence": []
2026-06-23T10:05:46.9885615Z         },
2026-06-23T10:05:46.9885701Z         "unit": {
2026-06-23T10:05:46.9885796Z           "complete": true,
2026-06-23T10:05:46.9885886Z           "evidence": [
2026-06-23T10:05:46.9885973Z             {
2026-06-23T10:05:46.9886105Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9886191Z               "line": 932
2026-06-23T10:05:46.9886278Z             },
2026-06-23T10:05:46.9886363Z             {
2026-06-23T10:05:46.9886486Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9886574Z               "line": 1309
2026-06-23T10:05:46.9886659Z             },
2026-06-23T10:05:46.9886745Z             {
2026-06-23T10:05:46.9886864Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9886950Z               "line": 1320
2026-06-23T10:05:46.9887036Z             },
2026-06-23T10:05:46.9887121Z             {
2026-06-23T10:05:46.9887241Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9887350Z               "line": 1336
2026-06-23T10:05:46.9887435Z             },
2026-06-23T10:05:46.9887518Z             {
2026-06-23T10:05:46.9887631Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9887722Z               "line": 1352
2026-06-23T10:05:46.9887799Z             },
2026-06-23T10:05:46.9887880Z             {
2026-06-23T10:05:46.9887998Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9888088Z               "line": 1374
2026-06-23T10:05:46.9888169Z             },
2026-06-23T10:05:46.9888263Z             {
2026-06-23T10:05:46.9888366Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9888463Z               "line": 1679
2026-06-23T10:05:46.9888545Z             },
2026-06-23T10:05:46.9888630Z             {
2026-06-23T10:05:46.9888744Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-23T10:05:46.9888835Z               "line": 130
2026-06-23T10:05:46.9888931Z             },
2026-06-23T10:05:46.9889073Z             {
2026-06-23T10:05:46.9889188Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-23T10:05:46.9889274Z               "line": 167
2026-06-23T10:05:46.9889358Z             },
2026-06-23T10:05:46.9889445Z             {
2026-06-23T10:05:46.9889554Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-23T10:05:46.9889659Z               "line": 175
2026-06-23T10:05:46.9889746Z             },
2026-06-23T10:05:46.9889827Z             {
2026-06-23T10:05:46.9889931Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-23T10:05:46.9890027Z               "line": 183
2026-06-23T10:05:46.9890113Z             },
2026-06-23T10:05:46.9890193Z             {
2026-06-23T10:05:46.9890308Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T10:05:46.9890386Z               "line": 896
2026-06-23T10:05:46.9890466Z             }
2026-06-23T10:05:46.9890555Z           ]
2026-06-23T10:05:46.9890631Z         }
2026-06-23T10:05:46.9890717Z       }
2026-06-23T10:05:46.9890793Z     },
2026-06-23T10:05:46.9890886Z     {
2026-06-23T10:05:46.9890972Z       "id": "REQ-INST-11",
2026-06-23T10:05:46.9891196Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-23T10:05:46.9891291Z       "requiredStages": [
2026-06-23T10:05:46.9891378Z         "impl",
2026-06-23T10:05:46.9891458Z         "unit"
2026-06-23T10:05:46.9891639Z       ],
2026-06-23T10:05:46.9891740Z       "stages": {
2026-06-23T10:05:46.9891826Z         "doc": {
2026-06-23T10:05:46.9891920Z           "complete": false,
2026-06-23T10:05:46.9892003Z           "evidence": []
2026-06-23T10:05:46.9892092Z         },
2026-06-23T10:05:46.9892174Z         "impl": {
2026-06-23T10:05:46.9892269Z           "complete": true,
2026-06-23T10:05:46.9892361Z           "evidence": [
2026-06-23T10:05:46.9892445Z             {
2026-06-23T10:05:46.9892570Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9892666Z               "line": 514
2026-06-23T10:05:46.9892860Z             },
2026-06-23T10:05:46.9892952Z             {
2026-06-23T10:05:46.9893079Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:46.9893180Z               "line": 297
2026-06-23T10:05:46.9893262Z             },
2026-06-23T10:05:46.9893348Z             {
2026-06-23T10:05:46.9893470Z               "path": "crates/spt-store/src/rename.rs",
2026-06-23T10:05:46.9893555Z               "line": 59
2026-06-23T10:05:46.9893646Z             },
2026-06-23T10:05:46.9893732Z             {
2026-06-23T10:05:46.9893841Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9893927Z               "line": 5946
2026-06-23T10:05:46.9894018Z             },
2026-06-23T10:05:46.9894103Z             {
2026-06-23T10:05:46.9894204Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9894290Z               "line": 8202
2026-06-23T10:05:46.9894376Z             }
2026-06-23T10:05:46.9894461Z           ]
2026-06-23T10:05:46.9894547Z         },
2026-06-23T10:05:46.9894647Z         "int": {
2026-06-23T10:05:46.9894742Z           "complete": false,
2026-06-23T10:05:46.9894833Z           "evidence": []
2026-06-23T10:05:46.9894920Z         },
2026-06-23T10:05:46.9895005Z         "unit": {
2026-06-23T10:05:46.9895095Z           "complete": true,
2026-06-23T10:05:46.9895182Z           "evidence": [
2026-06-23T10:05:46.9895272Z             {
2026-06-23T10:05:46.9895400Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9895487Z               "line": 1479
2026-06-23T10:05:46.9895578Z             },
2026-06-23T10:05:46.9895667Z             {
2026-06-23T10:05:46.9895790Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9895877Z               "line": 1512
2026-06-23T10:05:46.9895961Z             },
2026-06-23T10:05:46.9896050Z             {
2026-06-23T10:05:46.9896175Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:46.9896271Z               "line": 527
2026-06-23T10:05:46.9896365Z             },
2026-06-23T10:05:46.9896460Z             {
2026-06-23T10:05:46.9896576Z               "path": "crates/spt-store/src/rename.rs",
2026-06-23T10:05:46.9896670Z               "line": 160
2026-06-23T10:05:46.9896761Z             },
2026-06-23T10:05:46.9896838Z             {
2026-06-23T10:05:46.9896956Z               "path": "crates/spt-store/src/rename.rs",
2026-06-23T10:05:46.9897032Z               "line": 190
2026-06-23T10:05:46.9897110Z             },
2026-06-23T10:05:46.9897195Z             {
2026-06-23T10:05:46.9897309Z               "path": "crates/spt-store/src/rename.rs",
2026-06-23T10:05:46.9897395Z               "line": 225
2026-06-23T10:05:46.9897482Z             },
2026-06-23T10:05:46.9897567Z             {
2026-06-23T10:05:46.9897667Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9897769Z               "line": 9388
2026-06-23T10:05:46.9897853Z             }
2026-06-23T10:05:46.9897934Z           ]
2026-06-23T10:05:46.9898015Z         }
2026-06-23T10:05:46.9898098Z       }
2026-06-23T10:05:46.9898191Z     },
2026-06-23T10:05:46.9898273Z     {
2026-06-23T10:05:46.9898373Z       "id": "REQ-INST-12",
2026-06-23T10:05:46.9898643Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-23T10:05:46.9898748Z       "requiredStages": [
2026-06-23T10:05:46.9898837Z         "impl",
2026-06-23T10:05:46.9899080Z         "unit"
2026-06-23T10:05:46.9899171Z       ],
2026-06-23T10:05:46.9899251Z       "stages": {
2026-06-23T10:05:46.9899337Z         "doc": {
2026-06-23T10:05:46.9899438Z           "complete": false,
2026-06-23T10:05:46.9899523Z           "evidence": []
2026-06-23T10:05:46.9899613Z         },
2026-06-23T10:05:46.9899691Z         "impl": {
2026-06-23T10:05:46.9899786Z           "complete": true,
2026-06-23T10:05:46.9899881Z           "evidence": [
2026-06-23T10:05:46.9899971Z             {
2026-06-23T10:05:46.9900091Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9900281Z               "line": 566
2026-06-23T10:05:46.9900368Z             },
2026-06-23T10:05:46.9900453Z             {
2026-06-23T10:05:46.9900582Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9900668Z               "line": 659
2026-06-23T10:05:46.9900758Z             },
2026-06-23T10:05:46.9900844Z             {
2026-06-23T10:05:46.9900969Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9901064Z               "line": 739
2026-06-23T10:05:46.9901148Z             },
2026-06-23T10:05:46.9901233Z             {
2026-06-23T10:05:46.9901348Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:46.9901446Z               "line": 96
2026-06-23T10:05:46.9901537Z             },
2026-06-23T10:05:46.9901618Z             {
2026-06-23T10:05:46.9901733Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:46.9901813Z               "line": 269
2026-06-23T10:05:46.9901904Z             },
2026-06-23T10:05:46.9901991Z             {
2026-06-23T10:05:46.9902118Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-23T10:05:46.9902199Z               "line": 148
2026-06-23T10:05:46.9902286Z             }
2026-06-23T10:05:46.9902372Z           ]
2026-06-23T10:05:46.9902456Z         },
2026-06-23T10:05:46.9902544Z         "int": {
2026-06-23T10:05:46.9902629Z           "complete": false,
2026-06-23T10:05:46.9902715Z           "evidence": []
2026-06-23T10:05:46.9902800Z         },
2026-06-23T10:05:46.9902882Z         "unit": {
2026-06-23T10:05:46.9902982Z           "complete": true,
2026-06-23T10:05:46.9903058Z           "evidence": [
2026-06-23T10:05:46.9903139Z             {
2026-06-23T10:05:46.9903259Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9903353Z               "line": 1554
2026-06-23T10:05:46.9903444Z             },
2026-06-23T10:05:46.9903531Z             {
2026-06-23T10:05:46.9903653Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9903749Z               "line": 1577
2026-06-23T10:05:46.9903836Z             },
2026-06-23T10:05:46.9903922Z             {
2026-06-23T10:05:46.9904044Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9904135Z               "line": 1614
2026-06-23T10:05:46.9904216Z             },
2026-06-23T10:05:46.9904307Z             {
2026-06-23T10:05:46.9904420Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:46.9904522Z               "line": 457
2026-06-23T10:05:46.9904608Z             },
2026-06-23T10:05:46.9904692Z             {
2026-06-23T10:05:46.9904817Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-23T10:05:46.9904902Z               "line": 185
2026-06-23T10:05:46.9904987Z             },
2026-06-23T10:05:46.9905064Z             {
2026-06-23T10:05:46.9905184Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-23T10:05:46.9905279Z               "line": 206
2026-06-23T10:05:46.9905365Z             },
2026-06-23T10:05:46.9905466Z             {
2026-06-23T10:05:46.9905584Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-23T10:05:46.9905684Z               "line": 232
2026-06-23T10:05:46.9905762Z             }
2026-06-23T10:05:46.9905851Z           ]
2026-06-23T10:05:46.9905942Z         }
2026-06-23T10:05:46.9906027Z       }
2026-06-23T10:05:46.9906115Z     },
2026-06-23T10:05:46.9906307Z     {
2026-06-23T10:05:46.9906398Z       "id": "REQ-INST-13",
2026-06-23T10:05:46.9906577Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-23T10:05:46.9906682Z       "requiredStages": [
2026-06-23T10:05:46.9906764Z         "impl",
2026-06-23T10:05:46.9906850Z         "unit"
2026-06-23T10:05:46.9906940Z       ],
2026-06-23T10:05:46.9907025Z       "stages": {
2026-06-23T10:05:46.9907117Z         "doc": {
2026-06-23T10:05:46.9907202Z           "complete": false,
2026-06-23T10:05:46.9907296Z           "evidence": []
2026-06-23T10:05:46.9907370Z         },
2026-06-23T10:05:46.9907554Z         "impl": {
2026-06-23T10:05:46.9907655Z           "complete": true,
2026-06-23T10:05:46.9907736Z           "evidence": [
2026-06-23T10:05:46.9907817Z             {
2026-06-23T10:05:46.9907936Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T10:05:46.9908033Z               "line": 100
2026-06-23T10:05:46.9908122Z             },
2026-06-23T10:05:46.9908203Z             {
2026-06-23T10:05:46.9908333Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-23T10:05:46.9908422Z               "line": 171
2026-06-23T10:05:46.9908509Z             }
2026-06-23T10:05:46.9908585Z           ]
2026-06-23T10:05:46.9908672Z         },
2026-06-23T10:05:46.9908756Z         "int": {
2026-06-23T10:05:46.9908842Z           "complete": false,
2026-06-23T10:05:46.9909038Z           "evidence": []
2026-06-23T10:05:46.9909123Z         },
2026-06-23T10:05:46.9909203Z         "unit": {
2026-06-23T10:05:46.9909285Z           "complete": true,
2026-06-23T10:05:46.9909374Z           "evidence": [
2026-06-23T10:05:46.9909454Z             {
2026-06-23T10:05:46.9909578Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-23T10:05:46.9909669Z               "line": 261
2026-06-23T10:05:46.9909750Z             },
2026-06-23T10:05:46.9909835Z             {
2026-06-23T10:05:46.9909946Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-23T10:05:46.9910031Z               "line": 279
2026-06-23T10:05:46.9910131Z             }
2026-06-23T10:05:46.9910212Z           ]
2026-06-23T10:05:46.9910299Z         }
2026-06-23T10:05:46.9910384Z       }
2026-06-23T10:05:46.9910469Z     },
2026-06-23T10:05:46.9910546Z     {
2026-06-23T10:05:46.9910646Z       "id": "REQ-INST-14",
2026-06-23T10:05:46.9911013Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-23T10:05:46.9911123Z       "requiredStages": [
2026-06-23T10:05:46.9911210Z         "doc",
2026-06-23T10:05:46.9911304Z         "impl",
2026-06-23T10:05:46.9911433Z         "unit"
2026-06-23T10:05:46.9911530Z       ],
2026-06-23T10:05:46.9911624Z       "stages": {
2026-06-23T10:05:46.9911708Z         "doc": {
2026-06-23T10:05:46.9911798Z           "complete": true,
2026-06-23T10:05:46.9911894Z           "evidence": [
2026-06-23T10:05:46.9911978Z             {
2026-06-23T10:05:46.9912082Z               "path": "CONTEXT.md",
2026-06-23T10:05:46.9912164Z               "line": 606
2026-06-23T10:05:46.9912250Z             },
2026-06-23T10:05:46.9912336Z             {
2026-06-23T10:05:46.9912435Z               "path": "docs/STORAGE.md",
2026-06-23T10:05:46.9912527Z               "line": 49
2026-06-23T10:05:46.9912608Z             }
2026-06-23T10:05:46.9912697Z           ]
2026-06-23T10:05:46.9912769Z         },
2026-06-23T10:05:46.9912851Z         "impl": {
2026-06-23T10:05:46.9912941Z           "complete": true,
2026-06-23T10:05:46.9913031Z           "evidence": [
2026-06-23T10:05:46.9913114Z             {
2026-06-23T10:05:46.9913241Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9913341Z               "line": 410
2026-06-23T10:05:46.9913433Z             },
2026-06-23T10:05:46.9913523Z             {
2026-06-23T10:05:46.9913647Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9913733Z               "line": 367
2026-06-23T10:05:46.9913824Z             },
2026-06-23T10:05:46.9914009Z             {
2026-06-23T10:05:46.9914134Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:46.9914223Z               "line": 293
2026-06-23T10:05:46.9914314Z             },
2026-06-23T10:05:46.9914406Z             {
2026-06-23T10:05:46.9914505Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9914599Z               "line": 1926
2026-06-23T10:05:46.9914675Z             }
2026-06-23T10:05:46.9914767Z           ]
2026-06-23T10:05:46.9914848Z         },
2026-06-23T10:05:46.9914933Z         "int": {
2026-06-23T10:05:46.9915024Z           "complete": false,
2026-06-23T10:05:46.9915210Z           "evidence": []
2026-06-23T10:05:46.9915295Z         },
2026-06-23T10:05:46.9915382Z         "unit": {
2026-06-23T10:05:46.9915477Z           "complete": true,
2026-06-23T10:05:46.9915557Z           "evidence": [
2026-06-23T10:05:46.9915639Z             {
2026-06-23T10:05:46.9915763Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9915863Z               "line": 1163
2026-06-23T10:05:46.9915953Z             },
2026-06-23T10:05:46.9916036Z             {
2026-06-23T10:05:46.9916164Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9916254Z               "line": 944
2026-06-23T10:05:46.9916346Z             },
2026-06-23T10:05:46.9916430Z             {
2026-06-23T10:05:46.9916549Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9916632Z               "line": 1205
2026-06-23T10:05:46.9916722Z             },
2026-06-23T10:05:46.9916806Z             {
2026-06-23T10:05:46.9916915Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:46.9917021Z               "line": 659
2026-06-23T10:05:46.9917113Z             },
2026-06-23T10:05:46.9917194Z             {
2026-06-23T10:05:46.9917305Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9917396Z               "line": 9464
2026-06-23T10:05:46.9917480Z             }
2026-06-23T10:05:46.9917567Z           ]
2026-06-23T10:05:46.9917653Z         }
2026-06-23T10:05:46.9917739Z       }
2026-06-23T10:05:46.9917824Z     },
2026-06-23T10:05:46.9917901Z     {
2026-06-23T10:05:46.9917996Z       "id": "REQ-INST-15",
2026-06-23T10:05:46.9918682Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-23T10:05:46.9918787Z       "requiredStages": [
2026-06-23T10:05:46.9918869Z         "doc",
2026-06-23T10:05:46.9919045Z         "impl",
2026-06-23T10:05:46.9919126Z         "unit"
2026-06-23T10:05:46.9919213Z       ],
2026-06-23T10:05:46.9919293Z       "stages": {
2026-06-23T10:05:46.9919383Z         "doc": {
2026-06-23T10:05:46.9919480Z           "complete": true,
2026-06-23T10:05:46.9919561Z           "evidence": [
2026-06-23T10:05:46.9919654Z             {
2026-06-23T10:05:46.9919821Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-23T10:05:46.9919953Z               "line": 3
2026-06-23T10:05:46.9920047Z             }
2026-06-23T10:05:46.9920124Z           ]
2026-06-23T10:05:46.9920210Z         },
2026-06-23T10:05:46.9920300Z         "impl": {
2026-06-23T10:05:46.9920386Z           "complete": true,
2026-06-23T10:05:46.9920467Z           "evidence": [
2026-06-23T10:05:46.9920549Z             {
2026-06-23T10:05:46.9920677Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9920777Z               "line": 353
2026-06-23T10:05:46.9920859Z             },
2026-06-23T10:05:46.9920954Z             {
2026-06-23T10:05:46.9921068Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T10:05:46.9921155Z               "line": 60
2026-06-23T10:05:46.9921240Z             },
2026-06-23T10:05:46.9921321Z             {
2026-06-23T10:05:46.9921456Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:46.9921540Z               "line": 368
2026-06-23T10:05:46.9921727Z             },
2026-06-23T10:05:46.9921808Z             {
2026-06-23T10:05:46.9921935Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:46.9922027Z               "line": 417
2026-06-23T10:05:46.9922100Z             },
2026-06-23T10:05:46.9922189Z             {
2026-06-23T10:05:46.9922297Z               "path": "crates/spt-store/src/home.rs",
2026-06-23T10:05:46.9922383Z               "line": 19
2026-06-23T10:05:46.9922482Z             },
2026-06-23T10:05:46.9922567Z             {
2026-06-23T10:05:46.9922681Z               "path": "crates/spt-store/src/home.rs",
2026-06-23T10:05:46.9922867Z               "line": 70
2026-06-23T10:05:46.9922962Z             },
2026-06-23T10:05:46.9923049Z             {
2026-06-23T10:05:46.9923158Z               "path": "crates/spt-store/src/home.rs",
2026-06-23T10:05:46.9923248Z               "line": 96
2026-06-23T10:05:46.9923339Z             },
2026-06-23T10:05:46.9923425Z             {
2026-06-23T10:05:46.9923539Z               "path": "crates/spt-store/src/home.rs",
2026-06-23T10:05:46.9923630Z               "line": 121
2026-06-23T10:05:46.9923707Z             },
2026-06-23T10:05:46.9923797Z             {
2026-06-23T10:05:46.9923901Z               "path": "crates/spt-store/src/home.rs",
2026-06-23T10:05:46.9923988Z               "line": 172
2026-06-23T10:05:46.9924078Z             },
2026-06-23T10:05:46.9924164Z             {
2026-06-23T10:05:46.9924283Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:46.9924360Z               "line": 178
2026-06-23T10:05:46.9924445Z             },
2026-06-23T10:05:46.9924540Z             {
2026-06-23T10:05:46.9924647Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9924736Z               "line": 1818
2026-06-23T10:05:46.9924827Z             }
2026-06-23T10:05:46.9924909Z           ]
2026-06-23T10:05:46.9924995Z         },
2026-06-23T10:05:46.9925075Z         "int": {
2026-06-23T10:05:46.9925174Z           "complete": false,
2026-06-23T10:05:46.9925259Z           "evidence": []
2026-06-23T10:05:46.9925342Z         },
2026-06-23T10:05:46.9925427Z         "unit": {
2026-06-23T10:05:46.9925512Z           "complete": true,
2026-06-23T10:05:46.9925603Z           "evidence": [
2026-06-23T10:05:46.9925689Z             {
2026-06-23T10:05:46.9925822Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:46.9925914Z               "line": 577
2026-06-23T10:05:46.9925999Z             },
2026-06-23T10:05:46.9926090Z             {
2026-06-23T10:05:46.9926213Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:46.9926319Z               "line": 638
2026-06-23T10:05:46.9926405Z             },
2026-06-23T10:05:46.9926499Z             {
2026-06-23T10:05:46.9926605Z               "path": "crates/spt-store/src/home.rs",
2026-06-23T10:05:46.9926704Z               "line": 213
2026-06-23T10:05:46.9926795Z             },
2026-06-23T10:05:46.9926882Z             {
2026-06-23T10:05:46.9926995Z               "path": "crates/spt-store/src/home.rs",
2026-06-23T10:05:46.9927081Z               "line": 249
2026-06-23T10:05:46.9927172Z             },
2026-06-23T10:05:46.9927259Z             {
2026-06-23T10:05:46.9927376Z               "path": "crates/spt-store/src/home.rs",
2026-06-23T10:05:46.9927461Z               "line": 262
2026-06-23T10:05:46.9927542Z             },
2026-06-23T10:05:46.9927628Z             {
2026-06-23T10:05:46.9927736Z               "path": "crates/spt-store/src/home.rs",
2026-06-23T10:05:46.9927822Z               "line": 338
2026-06-23T10:05:46.9927903Z             },
2026-06-23T10:05:46.9928007Z             {
2026-06-23T10:05:46.9928122Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:46.9928204Z               "line": 690
2026-06-23T10:05:46.9928294Z             },
2026-06-23T10:05:46.9928379Z             {
2026-06-23T10:05:46.9928485Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9928575Z               "line": 9401
2026-06-23T10:05:46.9928742Z             },
2026-06-23T10:05:46.9928838Z             {
2026-06-23T10:05:46.9929027Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9929110Z               "line": 11375
2026-06-23T10:05:46.9929195Z             }
2026-06-23T10:05:46.9929272Z           ]
2026-06-23T10:05:46.9929357Z         }
2026-06-23T10:05:46.9929444Z       }
2026-06-23T10:05:46.9929534Z     },
2026-06-23T10:05:46.9929633Z     {
2026-06-23T10:05:46.9929744Z       "id": "REQ-INST-2",
2026-06-23T10:05:46.9929867Z       "title": "Per-node files, synced Psyche mind",
2026-06-23T10:05:46.9929958Z       "requiredStages": [
2026-06-23T10:05:46.9930145Z         "impl",
2026-06-23T10:05:46.9932655Z         "unit"
2026-06-23T10:05:46.9932767Z       ],
2026-06-23T10:05:46.9932848Z       "stages": {
2026-06-23T10:05:46.9932933Z         "doc": {
2026-06-23T10:05:46.9933028Z           "complete": false,
2026-06-23T10:05:46.9933127Z           "evidence": []
2026-06-23T10:05:46.9933207Z         },
2026-06-23T10:05:46.9933294Z         "impl": {
2026-06-23T10:05:46.9933390Z           "complete": true,
2026-06-23T10:05:46.9933470Z           "evidence": [
2026-06-23T10:05:46.9933556Z             {
2026-06-23T10:05:46.9933685Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.9933784Z               "line": 197
2026-06-23T10:05:46.9933861Z             },
2026-06-23T10:05:46.9933943Z             {
2026-06-23T10:05:46.9934071Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T10:05:46.9934161Z               "line": 28
2026-06-23T10:05:46.9934244Z             },
2026-06-23T10:05:46.9934329Z             {
2026-06-23T10:05:46.9934452Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T10:05:46.9934538Z               "line": 74
2026-06-23T10:05:46.9934629Z             },
2026-06-23T10:05:46.9934715Z             {
2026-06-23T10:05:46.9934824Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T10:05:46.9934911Z               "line": 96
2026-06-23T10:05:46.9934991Z             },
2026-06-23T10:05:46.9935077Z             {
2026-06-23T10:05:46.9935183Z               "path": "crates/spt-live/src/resume.rs",
2026-06-23T10:05:46.9935278Z               "line": 86
2026-06-23T10:05:46.9935367Z             },
2026-06-23T10:05:46.9935449Z             {
2026-06-23T10:05:46.9935564Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-23T10:05:46.9935649Z               "line": 118
2026-06-23T10:05:46.9935729Z             }
2026-06-23T10:05:46.9935815Z           ]
2026-06-23T10:05:46.9935907Z         },
2026-06-23T10:05:46.9935996Z         "int": {
2026-06-23T10:05:46.9936091Z           "complete": false,
2026-06-23T10:05:46.9936178Z           "evidence": []
2026-06-23T10:05:46.9936254Z         },
2026-06-23T10:05:46.9936344Z         "unit": {
2026-06-23T10:05:46.9936430Z           "complete": true,
2026-06-23T10:05:46.9936521Z           "evidence": [
2026-06-23T10:05:46.9936607Z             {
2026-06-23T10:05:46.9936715Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T10:05:46.9936817Z               "line": 250
2026-06-23T10:05:46.9936893Z             },
2026-06-23T10:05:46.9936969Z             {
2026-06-23T10:05:46.9937079Z               "path": "crates/spt-live/src/resume.rs",
2026-06-23T10:05:46.9937165Z               "line": 280
2026-06-23T10:05:46.9937250Z             }
2026-06-23T10:05:46.9937331Z           ]
2026-06-23T10:05:46.9937418Z         }
2026-06-23T10:05:46.9937499Z       }
2026-06-23T10:05:46.9937588Z     },
2026-06-23T10:05:46.9937674Z     {
2026-06-23T10:05:46.9937767Z       "id": "REQ-INST-3",
2026-06-23T10:05:46.9937917Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-23T10:05:46.9938012Z       "requiredStages": [
2026-06-23T10:05:46.9938098Z         "doc",
2026-06-23T10:05:46.9938178Z         "impl",
2026-06-23T10:05:46.9938258Z         "unit"
2026-06-23T10:05:46.9938343Z       ],
2026-06-23T10:05:46.9938439Z       "stages": {
2026-06-23T10:05:46.9938512Z         "doc": {
2026-06-23T10:05:46.9938605Z           "complete": true,
2026-06-23T10:05:46.9938825Z           "evidence": [
2026-06-23T10:05:46.9938906Z             {
2026-06-23T10:05:46.9939093Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-23T10:05:46.9939183Z               "line": 3
2026-06-23T10:05:46.9939258Z             }
2026-06-23T10:05:46.9939346Z           ]
2026-06-23T10:05:46.9939427Z         },
2026-06-23T10:05:46.9939512Z         "impl": {
2026-06-23T10:05:46.9939592Z           "complete": true,
2026-06-23T10:05:46.9939679Z           "evidence": [
2026-06-23T10:05:46.9939760Z             {
2026-06-23T10:05:46.9939883Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T10:05:46.9940117Z               "line": 60
2026-06-23T10:05:46.9940194Z             },
2026-06-23T10:05:46.9940280Z             {
2026-06-23T10:05:46.9940409Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T10:05:46.9940509Z               "line": 480
2026-06-23T10:05:46.9940590Z             },
2026-06-23T10:05:46.9940672Z             {
2026-06-23T10:05:46.9940812Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.9940898Z               "line": 452
2026-06-23T10:05:46.9940984Z             },
2026-06-23T10:05:46.9941069Z             {
2026-06-23T10:05:46.9941191Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.9941277Z               "line": 592
2026-06-23T10:05:46.9941364Z             },
2026-06-23T10:05:46.9941449Z             {
2026-06-23T10:05:46.9941563Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.9941646Z               "line": 626
2026-06-23T10:05:46.9941736Z             },
2026-06-23T10:05:46.9941821Z             {
2026-06-23T10:05:46.9941932Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-23T10:05:46.9942017Z               "line": 74
2026-06-23T10:05:46.9942107Z             },
2026-06-23T10:05:46.9942188Z             {
2026-06-23T10:05:46.9942317Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9942408Z               "line": 234
2026-06-23T10:05:46.9942493Z             },
2026-06-23T10:05:46.9942576Z             {
2026-06-23T10:05:46.9942703Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9942789Z               "line": 396
2026-06-23T10:05:46.9942876Z             },
2026-06-23T10:05:46.9942961Z             {
2026-06-23T10:05:46.9943075Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9943172Z               "line": 45
2026-06-23T10:05:46.9943253Z             },
2026-06-23T10:05:46.9943327Z             {
2026-06-23T10:05:46.9943445Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9943541Z               "line": 114
2026-06-23T10:05:46.9943616Z             },
2026-06-23T10:05:46.9943701Z             {
2026-06-23T10:05:46.9943820Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9943902Z               "line": 152
2026-06-23T10:05:46.9943978Z             },
2026-06-23T10:05:46.9944063Z             {
2026-06-23T10:05:46.9944174Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9944259Z               "line": 168
2026-06-23T10:05:46.9944344Z             },
2026-06-23T10:05:46.9944430Z             {
2026-06-23T10:05:46.9944550Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9944626Z               "line": 178
2026-06-23T10:05:46.9944712Z             },
2026-06-23T10:05:46.9944789Z             {
2026-06-23T10:05:46.9944898Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9944984Z               "line": 210
2026-06-23T10:05:46.9945074Z             },
2026-06-23T10:05:46.9945161Z             {
2026-06-23T10:05:46.9945270Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9945360Z               "line": 287
2026-06-23T10:05:46.9945443Z             },
2026-06-23T10:05:46.9945523Z             {
2026-06-23T10:05:46.9945632Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9945824Z               "line": 311
2026-06-23T10:05:46.9945913Z             },
2026-06-23T10:05:46.9946000Z             {
2026-06-23T10:05:46.9946115Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9946199Z               "line": 389
2026-06-23T10:05:46.9946289Z             },
2026-06-23T10:05:46.9946379Z             {
2026-06-23T10:05:46.9946491Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9946585Z               "line": 438
2026-06-23T10:05:46.9946671Z             },
2026-06-23T10:05:46.9946757Z             {
2026-06-23T10:05:46.9946942Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-23T10:05:46.9947034Z               "line": 37
2026-06-23T10:05:46.9947129Z             },
2026-06-23T10:05:46.9947210Z             {
2026-06-23T10:05:46.9947329Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9947415Z               "line": 62
2026-06-23T10:05:46.9947500Z             },
2026-06-23T10:05:46.9947591Z             {
2026-06-23T10:05:46.9947711Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:46.9947801Z               "line": 279
2026-06-23T10:05:46.9947882Z             },
2026-06-23T10:05:46.9947973Z             {
2026-06-23T10:05:46.9948078Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9948177Z               "line": 2202
2026-06-23T10:05:46.9948254Z             }
2026-06-23T10:05:46.9948346Z           ]
2026-06-23T10:05:46.9948421Z         },
2026-06-23T10:05:46.9948496Z         "int": {
2026-06-23T10:05:46.9948596Z           "complete": false,
2026-06-23T10:05:46.9948686Z           "evidence": []
2026-06-23T10:05:46.9948776Z         },
2026-06-23T10:05:46.9948856Z         "unit": {
2026-06-23T10:05:46.9949038Z           "complete": true,
2026-06-23T10:05:46.9949128Z           "evidence": [
2026-06-23T10:05:46.9949213Z             {
2026-06-23T10:05:46.9949339Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T10:05:46.9949428Z               "line": 360
2026-06-23T10:05:46.9949509Z             },
2026-06-23T10:05:46.9949591Z             {
2026-06-23T10:05:46.9949705Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.9949791Z               "line": 1048
2026-06-23T10:05:46.9949872Z             },
2026-06-23T10:05:46.9949963Z             {
2026-06-23T10:05:46.9950101Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.9950196Z               "line": 1105
2026-06-23T10:05:46.9950282Z             },
2026-06-23T10:05:46.9950358Z             {
2026-06-23T10:05:46.9950472Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.9950555Z               "line": 889
2026-06-23T10:05:46.9950645Z             },
2026-06-23T10:05:46.9950725Z             {
2026-06-23T10:05:46.9950835Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:46.9950917Z               "line": 1014
2026-06-23T10:05:46.9951002Z             },
2026-06-23T10:05:46.9951088Z             {
2026-06-23T10:05:46.9951208Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9951293Z               "line": 1264
2026-06-23T10:05:46.9951382Z             },
2026-06-23T10:05:46.9951472Z             {
2026-06-23T10:05:46.9951601Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9951690Z               "line": 1405
2026-06-23T10:05:46.9951771Z             },
2026-06-23T10:05:46.9951852Z             {
2026-06-23T10:05:46.9951981Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9952066Z               "line": 449
2026-06-23T10:05:46.9952148Z             },
2026-06-23T10:05:46.9952234Z             {
2026-06-23T10:05:46.9952347Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9952438Z               "line": 485
2026-06-23T10:05:46.9952511Z             },
2026-06-23T10:05:46.9952596Z             {
2026-06-23T10:05:46.9952714Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9952901Z               "line": 540
2026-06-23T10:05:46.9952991Z             },
2026-06-23T10:05:46.9953063Z             {
2026-06-23T10:05:46.9953178Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9953267Z               "line": 697
2026-06-23T10:05:46.9953354Z             },
2026-06-23T10:05:46.9953441Z             {
2026-06-23T10:05:46.9953559Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9953645Z               "line": 931
2026-06-23T10:05:46.9953732Z             },
2026-06-23T10:05:46.9953818Z             {
2026-06-23T10:05:46.9954029Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9954111Z               "line": 945
2026-06-23T10:05:46.9954200Z             },
2026-06-23T10:05:46.9954285Z             {
2026-06-23T10:05:46.9954409Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9954501Z               "line": 1290
2026-06-23T10:05:46.9954585Z             },
2026-06-23T10:05:46.9954661Z             {
2026-06-23T10:05:46.9954772Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:46.9954858Z               "line": 609
2026-06-23T10:05:46.9954943Z             },
2026-06-23T10:05:46.9955029Z             {
2026-06-23T10:05:46.9955139Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9955229Z               "line": 9425
2026-06-23T10:05:46.9955310Z             }
2026-06-23T10:05:46.9955397Z           ]
2026-06-23T10:05:46.9955477Z         }
2026-06-23T10:05:46.9955558Z       }
2026-06-23T10:05:46.9955649Z     },
2026-06-23T10:05:46.9955726Z     {
2026-06-23T10:05:46.9955816Z       "id": "REQ-INST-4",
2026-06-23T10:05:46.9955993Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-23T10:05:46.9956092Z       "requiredStages": [
2026-06-23T10:05:46.9956183Z         "impl",
2026-06-23T10:05:46.9956269Z         "unit"
2026-06-23T10:05:46.9956365Z       ],
2026-06-23T10:05:46.9956449Z       "stages": {
2026-06-23T10:05:46.9956536Z         "doc": {
2026-06-23T10:05:46.9956627Z           "complete": false,
2026-06-23T10:05:46.9956713Z           "evidence": []
2026-06-23T10:05:46.9956797Z         },
2026-06-23T10:05:46.9956882Z         "impl": {
2026-06-23T10:05:46.9956974Z           "complete": true,
2026-06-23T10:05:46.9957065Z           "evidence": [
2026-06-23T10:05:46.9957154Z             {
2026-06-23T10:05:46.9957279Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.9957365Z               "line": 593
2026-06-23T10:05:46.9957445Z             },
2026-06-23T10:05:46.9957526Z             {
2026-06-23T10:05:46.9957651Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9957742Z               "line": 202
2026-06-23T10:05:46.9957827Z             },
2026-06-23T10:05:46.9957903Z             {
2026-06-23T10:05:46.9958023Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9958108Z               "line": 234
2026-06-23T10:05:46.9958194Z             },
2026-06-23T10:05:46.9958281Z             {
2026-06-23T10:05:46.9958385Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9958475Z               "line": 274
2026-06-23T10:05:46.9958553Z             }
2026-06-23T10:05:46.9958638Z           ]
2026-06-23T10:05:46.9958714Z         },
2026-06-23T10:05:46.9958795Z         "int": {
2026-06-23T10:05:46.9958897Z           "complete": false,
2026-06-23T10:05:46.9959061Z           "evidence": []
2026-06-23T10:05:46.9959142Z         },
2026-06-23T10:05:46.9959219Z         "unit": {
2026-06-23T10:05:46.9959312Z           "complete": true,
2026-06-23T10:05:46.9959402Z           "evidence": [
2026-06-23T10:05:46.9959483Z             {
2026-06-23T10:05:46.9959608Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:46.9959703Z               "line": 1100
2026-06-23T10:05:46.9959783Z             },
2026-06-23T10:05:46.9959869Z             {
2026-06-23T10:05:46.9959984Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9960184Z               "line": 561
2026-06-23T10:05:46.9960270Z             },
2026-06-23T10:05:46.9960360Z             {
2026-06-23T10:05:46.9960461Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9960551Z               "line": 668
2026-06-23T10:05:46.9960632Z             },
2026-06-23T10:05:46.9960712Z             {
2026-06-23T10:05:46.9960828Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9960909Z               "line": 750
2026-06-23T10:05:46.9960990Z             }
2026-06-23T10:05:46.9961071Z           ]
2026-06-23T10:05:46.9961257Z         }
2026-06-23T10:05:46.9961338Z       }
2026-06-23T10:05:46.9961415Z     },
2026-06-23T10:05:46.9961501Z     {
2026-06-23T10:05:46.9961590Z       "id": "REQ-INST-5",
2026-06-23T10:05:46.9961764Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-23T10:05:46.9961858Z       "requiredStages": [
2026-06-23T10:05:46.9961942Z         "impl",
2026-06-23T10:05:46.9962028Z         "unit",
2026-06-23T10:05:46.9962114Z         "int"
2026-06-23T10:05:46.9962198Z       ],
2026-06-23T10:05:46.9962278Z       "stages": {
2026-06-23T10:05:46.9962369Z         "doc": {
2026-06-23T10:05:46.9962456Z           "complete": false,
2026-06-23T10:05:46.9962551Z           "evidence": []
2026-06-23T10:05:46.9962631Z         },
2026-06-23T10:05:46.9962718Z         "impl": {
2026-06-23T10:05:46.9962804Z           "complete": true,
2026-06-23T10:05:46.9962898Z           "evidence": [
2026-06-23T10:05:46.9962984Z             {
2026-06-23T10:05:46.9963109Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-23T10:05:46.9963199Z               "line": 85
2026-06-23T10:05:46.9963279Z             },
2026-06-23T10:05:46.9963366Z             {
2026-06-23T10:05:46.9963475Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T10:05:46.9963556Z               "line": 68
2026-06-23T10:05:46.9963637Z             },
2026-06-23T10:05:46.9963720Z             {
2026-06-23T10:05:46.9963832Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T10:05:46.9963914Z               "line": 99
2026-06-23T10:05:46.9964001Z             },
2026-06-23T10:05:46.9964082Z             {
2026-06-23T10:05:46.9964191Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T10:05:46.9964282Z               "line": 183
2026-06-23T10:05:46.9964364Z             },
2026-06-23T10:05:46.9964453Z             {
2026-06-23T10:05:46.9964561Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T10:05:46.9964661Z               "line": 314
2026-06-23T10:05:46.9964761Z             }
2026-06-23T10:05:46.9964850Z           ]
2026-06-23T10:05:46.9964936Z         },
2026-06-23T10:05:46.9965008Z         "int": {
2026-06-23T10:05:46.9965108Z           "complete": true,
2026-06-23T10:05:46.9965183Z           "evidence": [
2026-06-23T10:05:46.9965270Z             {
2026-06-23T10:05:46.9965399Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T10:05:46.9965488Z               "line": 156
2026-06-23T10:05:46.9965575Z             },
2026-06-23T10:05:46.9965652Z             {
2026-06-23T10:05:46.9965775Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-23T10:05:46.9965861Z               "line": 145
2026-06-23T10:05:46.9965952Z             },
2026-06-23T10:05:46.9966037Z             {
2026-06-23T10:05:46.9966147Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:46.9966243Z               "line": 709
2026-06-23T10:05:46.9966328Z             },
2026-06-23T10:05:46.9966419Z             {
2026-06-23T10:05:46.9966534Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:46.9966634Z               "line": 1071
2026-06-23T10:05:46.9966724Z             }
2026-06-23T10:05:46.9966810Z           ]
2026-06-23T10:05:46.9966892Z         },
2026-06-23T10:05:46.9966972Z         "unit": {
2026-06-23T10:05:46.9967058Z           "complete": true,
2026-06-23T10:05:46.9967139Z           "evidence": [
2026-06-23T10:05:46.9967324Z             {
2026-06-23T10:05:46.9967433Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T10:05:46.9967514Z               "line": 552
2026-06-23T10:05:46.9967596Z             },
2026-06-23T10:05:46.9967681Z             {
2026-06-23T10:05:46.9967786Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T10:05:46.9967873Z               "line": 595
2026-06-23T10:05:46.9967959Z             },
2026-06-23T10:05:46.9968039Z             {
2026-06-23T10:05:46.9968154Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-23T10:05:46.9968239Z               "line": 219
2026-06-23T10:05:46.9968392Z             }
2026-06-23T10:05:46.9968473Z           ]
2026-06-23T10:05:46.9968559Z         }
2026-06-23T10:05:46.9968645Z       }
2026-06-23T10:05:46.9968735Z     },
2026-06-23T10:05:46.9968817Z     {
2026-06-23T10:05:46.9968916Z       "id": "REQ-INST-6",
2026-06-23T10:05:46.9969170Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-23T10:05:46.9969269Z       "requiredStages": [
2026-06-23T10:05:46.9969355Z         "impl",
2026-06-23T10:05:46.9969437Z         "unit",
2026-06-23T10:05:46.9969522Z         "int"
2026-06-23T10:05:46.9969607Z       ],
2026-06-23T10:05:46.9969688Z       "stages": {
2026-06-23T10:05:46.9969774Z         "doc": {
2026-06-23T10:05:46.9969872Z           "complete": true,
2026-06-23T10:05:46.9969953Z           "evidence": [
2026-06-23T10:05:46.9970033Z             {
2026-06-23T10:05:46.9970144Z               "path": "docs/DEFERRED.md",
2026-06-23T10:05:46.9970224Z               "line": 13
2026-06-23T10:05:46.9970319Z             }
2026-06-23T10:05:46.9970391Z           ]
2026-06-23T10:05:46.9970473Z         },
2026-06-23T10:05:46.9970558Z         "impl": {
2026-06-23T10:05:46.9970653Z           "complete": true,
2026-06-23T10:05:46.9970745Z           "evidence": [
2026-06-23T10:05:46.9970826Z             {
2026-06-23T10:05:46.9970953Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T10:05:46.9971041Z               "line": 391
2026-06-23T10:05:46.9971131Z             },
2026-06-23T10:05:46.9971211Z             {
2026-06-23T10:05:46.9971335Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-23T10:05:46.9971426Z               "line": 27
2026-06-23T10:05:46.9971502Z             },
2026-06-23T10:05:46.9971592Z             {
2026-06-23T10:05:46.9971694Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-23T10:05:46.9971793Z               "line": 73
2026-06-23T10:05:46.9971874Z             },
2026-06-23T10:05:46.9971965Z             {
2026-06-23T10:05:46.9972075Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-23T10:05:46.9972174Z               "line": 182
2026-06-23T10:05:46.9972261Z             },
2026-06-23T10:05:46.9972343Z             {
2026-06-23T10:05:46.9972455Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9972540Z               "line": 426
2026-06-23T10:05:46.9972621Z             },
2026-06-23T10:05:46.9972712Z             {
2026-06-23T10:05:46.9972825Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-23T10:05:46.9972905Z               "line": 31
2026-06-23T10:05:46.9972991Z             },
2026-06-23T10:05:46.9973078Z             {
2026-06-23T10:05:46.9973191Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T10:05:46.9973283Z               "line": 202
2026-06-23T10:05:46.9973369Z             },
2026-06-23T10:05:46.9973449Z             {
2026-06-23T10:05:46.9973563Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T10:05:46.9973655Z               "line": 83
2026-06-23T10:05:46.9973745Z             },
2026-06-23T10:05:46.9973830Z             {
2026-06-23T10:05:46.9973932Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:46.9974021Z               "line": 2203
2026-06-23T10:05:46.9974098Z             },
2026-06-23T10:05:46.9974179Z             {
2026-06-23T10:05:46.9974289Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T10:05:46.9974488Z               "line": 179
2026-06-23T10:05:46.9974575Z             },
2026-06-23T10:05:46.9974665Z             {
2026-06-23T10:05:46.9974775Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T10:05:46.9974867Z               "line": 215
2026-06-23T10:05:46.9974957Z             }
2026-06-23T10:05:46.9975041Z           ]
2026-06-23T10:05:46.9975131Z         },
2026-06-23T10:05:46.9975217Z         "int": {
2026-06-23T10:05:46.9975307Z           "complete": true,
2026-06-23T10:05:46.9975396Z           "evidence": [
2026-06-23T10:05:46.9975481Z             {
2026-06-23T10:05:46.9975601Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:46.9975782Z               "line": 723
2026-06-23T10:05:46.9975874Z             },
2026-06-23T10:05:46.9975959Z             {
2026-06-23T10:05:46.9976077Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:46.9976174Z               "line": 1116
2026-06-23T10:05:46.9976264Z             },
2026-06-23T10:05:46.9976349Z             {
2026-06-23T10:05:46.9976465Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T10:05:46.9976565Z               "line": 726
2026-06-23T10:05:46.9976646Z             }
2026-06-23T10:05:46.9976731Z           ]
2026-06-23T10:05:46.9976818Z         },
2026-06-23T10:05:46.9976907Z         "unit": {
2026-06-23T10:05:46.9976993Z           "complete": true,
2026-06-23T10:05:46.9977079Z           "evidence": [
2026-06-23T10:05:46.9977166Z             {
2026-06-23T10:05:46.9977289Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T10:05:46.9977380Z               "line": 661
2026-06-23T10:05:46.9977471Z             },
2026-06-23T10:05:46.9977542Z             {
2026-06-23T10:05:46.9977665Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:46.9977757Z               "line": 899
2026-06-23T10:05:46.9977848Z             },
2026-06-23T10:05:46.9977927Z             {
2026-06-23T10:05:46.9978031Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-23T10:05:46.9978123Z               "line": 66
2026-06-23T10:05:46.9978204Z             },
2026-06-23T10:05:46.9978294Z             {
2026-06-23T10:05:46.9978394Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T10:05:46.9978490Z               "line": 297
2026-06-23T10:05:46.9978570Z             },
2026-06-23T10:05:46.9978651Z             {
2026-06-23T10:05:46.9978762Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T10:05:46.9978843Z               "line": 203
2026-06-23T10:05:46.9978928Z             }
2026-06-23T10:05:46.9979091Z           ]
2026-06-23T10:05:46.9979176Z         }
2026-06-23T10:05:46.9979266Z       }
2026-06-23T10:05:46.9979344Z     },
2026-06-23T10:05:46.9979434Z     {
2026-06-23T10:05:46.9979520Z       "id": "REQ-INST-7",
2026-06-23T10:05:46.9979663Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-23T10:05:46.9979758Z       "requiredStages": [
2026-06-23T10:05:46.9979853Z         "impl",
2026-06-23T10:05:46.9979934Z         "unit",
2026-06-23T10:05:46.9980022Z         "int"
2026-06-23T10:05:46.9980110Z       ],
2026-06-23T10:05:46.9980196Z       "stages": {
2026-06-23T10:05:46.9980281Z         "doc": {
2026-06-23T10:05:46.9980377Z           "complete": false,
2026-06-23T10:05:46.9980460Z           "evidence": []
2026-06-23T10:05:46.9980541Z         },
2026-06-23T10:05:46.9980622Z         "impl": {
2026-06-23T10:05:46.9980718Z           "complete": true,
2026-06-23T10:05:46.9980799Z           "evidence": [
2026-06-23T10:05:46.9980884Z             {
2026-06-23T10:05:46.9981004Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T10:05:46.9981099Z               "line": 436
2026-06-23T10:05:46.9981190Z             },
2026-06-23T10:05:46.9981271Z             {
2026-06-23T10:05:46.9981400Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9981485Z               "line": 27
2026-06-23T10:05:46.9981572Z             },
2026-06-23T10:05:46.9981653Z             {
2026-06-23T10:05:46.9981790Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9982000Z               "line": 207
2026-06-23T10:05:46.9982086Z             },
2026-06-23T10:05:46.9982176Z             {
2026-06-23T10:05:46.9982297Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9982386Z               "line": 344
2026-06-23T10:05:46.9982472Z             },
2026-06-23T10:05:46.9982559Z             {
2026-06-23T10:05:46.9982682Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-23T10:05:46.9982754Z               "line": 59
2026-06-23T10:05:46.9982841Z             },
2026-06-23T10:05:46.9983020Z             {
2026-06-23T10:05:46.9983143Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9983239Z               "line": 41
2026-06-23T10:05:46.9983323Z             },
2026-06-23T10:05:46.9983413Z             {
2026-06-23T10:05:46.9983533Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T10:05:46.9983619Z               "line": 27
2026-06-23T10:05:46.9983713Z             },
2026-06-23T10:05:46.9983799Z             {
2026-06-23T10:05:46.9983919Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T10:05:46.9984000Z               "line": 119
2026-06-23T10:05:46.9984089Z             },
2026-06-23T10:05:46.9984177Z             {
2026-06-23T10:05:46.9984305Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T10:05:46.9984385Z               "line": 134
2026-06-23T10:05:46.9984477Z             },
2026-06-23T10:05:46.9984567Z             {
2026-06-23T10:05:46.9984686Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T10:05:46.9984782Z               "line": 139
2026-06-23T10:05:46.9984863Z             }
2026-06-23T10:05:46.9984957Z           ]
2026-06-23T10:05:46.9985034Z         },
2026-06-23T10:05:46.9985117Z         "int": {
2026-06-23T10:05:46.9985207Z           "complete": true,
2026-06-23T10:05:46.9985291Z           "evidence": [
2026-06-23T10:05:46.9985368Z             {
2026-06-23T10:05:46.9985493Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-23T10:05:46.9985582Z               "line": 145
2026-06-23T10:05:46.9985667Z             },
2026-06-23T10:05:46.9985753Z             {
2026-06-23T10:05:46.9985881Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:46.9985970Z               "line": 667
2026-06-23T10:05:46.9986056Z             },
2026-06-23T10:05:46.9986143Z             {
2026-06-23T10:05:46.9986266Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:46.9986352Z               "line": 966
2026-06-23T10:05:46.9986434Z             }
2026-06-23T10:05:46.9986524Z           ]
2026-06-23T10:05:46.9986609Z         },
2026-06-23T10:05:46.9986695Z         "unit": {
2026-06-23T10:05:46.9986791Z           "complete": true,
2026-06-23T10:05:46.9986882Z           "evidence": [
2026-06-23T10:05:46.9986961Z             {
2026-06-23T10:05:46.9987087Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9987176Z               "line": 1134
2026-06-23T10:05:46.9987262Z             },
2026-06-23T10:05:46.9987349Z             {
2026-06-23T10:05:46.9987473Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:46.9987568Z               "line": 1521
2026-06-23T10:05:46.9987654Z             },
2026-06-23T10:05:46.9987736Z             {
2026-06-23T10:05:46.9987864Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-23T10:05:46.9987954Z               "line": 84
2026-06-23T10:05:46.9988041Z             },
2026-06-23T10:05:46.9988130Z             {
2026-06-23T10:05:46.9988255Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9988336Z               "line": 812
2026-06-23T10:05:46.9988426Z             },
2026-06-23T10:05:46.9988515Z             {
2026-06-23T10:05:46.9988630Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9988707Z               "line": 823
2026-06-23T10:05:46.9988783Z             },
2026-06-23T10:05:46.9988935Z             {
2026-06-23T10:05:46.9989145Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:46.9989235Z               "line": 838
2026-06-23T10:05:46.9989322Z             },
2026-06-23T10:05:46.9989408Z             {
2026-06-23T10:05:46.9989521Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T10:05:46.9989613Z               "line": 166
2026-06-23T10:05:46.9989698Z             },
2026-06-23T10:05:46.9989784Z             {
2026-06-23T10:05:46.9989909Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T10:05:46.9990004Z               "line": 181
2026-06-23T10:05:46.9990189Z             },
2026-06-23T10:05:46.9990271Z             {
2026-06-23T10:05:46.9990389Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T10:05:46.9990485Z               "line": 214
2026-06-23T10:05:46.9990577Z             }
2026-06-23T10:05:46.9990657Z           ]
2026-06-23T10:05:46.9990737Z         }
2026-06-23T10:05:46.9990826Z       }
2026-06-23T10:05:46.9990908Z     },
2026-06-23T10:05:46.9990983Z     {
2026-06-23T10:05:46.9991073Z       "id": "REQ-INST-8",
2026-06-23T10:05:46.9991221Z       "title": "Remote-control mode distinct from local operation",
2026-06-23T10:05:46.9991308Z       "requiredStages": [
2026-06-23T10:05:46.9991392Z         "impl",
2026-06-23T10:05:46.9991468Z         "unit",
2026-06-23T10:05:46.9991555Z         "int"
2026-06-23T10:05:46.9991641Z       ],
2026-06-23T10:05:46.9991726Z       "stages": {
2026-06-23T10:05:46.9991812Z         "doc": {
2026-06-23T10:05:46.9991898Z           "complete": false,
2026-06-23T10:05:46.9992007Z           "evidence": []
2026-06-23T10:05:46.9992088Z         },
2026-06-23T10:05:46.9992185Z         "impl": {
2026-06-23T10:05:46.9992260Z           "complete": true,
2026-06-23T10:05:46.9992364Z           "evidence": [
2026-06-23T10:05:46.9992451Z             {
2026-06-23T10:05:46.9992574Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T10:05:46.9992670Z               "line": 202
2026-06-23T10:05:46.9992751Z             },
2026-06-23T10:05:46.9992838Z             {
2026-06-23T10:05:46.9992956Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T10:05:46.9993052Z               "line": 504
2026-06-23T10:05:46.9993139Z             },
2026-06-23T10:05:46.9993218Z             {
2026-06-23T10:05:46.9993333Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T10:05:46.9993415Z               "line": 544
2026-06-23T10:05:46.9993501Z             },
2026-06-23T10:05:46.9993585Z             {
2026-06-23T10:05:46.9993708Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-23T10:05:46.9993809Z               "line": 62
2026-06-23T10:05:46.9993888Z             }
2026-06-23T10:05:46.9993968Z           ]
2026-06-23T10:05:46.9994054Z         },
2026-06-23T10:05:46.9994141Z         "int": {
2026-06-23T10:05:46.9994226Z           "complete": true,
2026-06-23T10:05:46.9994321Z           "evidence": [
2026-06-23T10:05:46.9994408Z             {
2026-06-23T10:05:46.9994522Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T10:05:46.9994607Z               "line": 415
2026-06-23T10:05:46.9997117Z             },
2026-06-23T10:05:46.9997236Z             {
2026-06-23T10:05:46.9997380Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:46.9997474Z               "line": 1030
2026-06-23T10:05:46.9997556Z             }
2026-06-23T10:05:46.9997642Z           ]
2026-06-23T10:05:46.9997732Z         },
2026-06-23T10:05:46.9997818Z         "unit": {
2026-06-23T10:05:46.9997904Z           "complete": true,
2026-06-23T10:05:46.9998009Z           "evidence": [
2026-06-23T10:05:46.9998095Z             {
2026-06-23T10:05:46.9998229Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T10:05:46.9998314Z               "line": 371
2026-06-23T10:05:46.9998399Z             },
2026-06-23T10:05:46.9998485Z             {
2026-06-23T10:05:46.9998620Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T10:05:46.9998863Z               "line": 642
2026-06-23T10:05:46.9999028Z             },
2026-06-23T10:05:46.9999104Z             {
2026-06-23T10:05:46.9999233Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-23T10:05:46.9999325Z               "line": 116
2026-06-23T10:05:46.9999409Z             },
2026-06-23T10:05:46.9999485Z             {
2026-06-23T10:05:46.9999596Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-23T10:05:46.9999686Z               "line": 160
2026-06-23T10:05:46.9999767Z             }
2026-06-23T10:05:46.9999849Z           ]
2026-06-23T10:05:47.0000043Z         }
2026-06-23T10:05:47.0000120Z       }
2026-06-23T10:05:47.0000197Z     },
2026-06-23T10:05:47.0000272Z     {
2026-06-23T10:05:47.0000377Z       "id": "REQ-INST-9",
2026-06-23T10:05:47.0000564Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-23T10:05:47.0000659Z       "requiredStages": [
2026-06-23T10:05:47.0000759Z         "impl",
2026-06-23T10:05:47.0000851Z         "unit"
2026-06-23T10:05:47.0000930Z       ],
2026-06-23T10:05:47.0001007Z       "stages": {
2026-06-23T10:05:47.0001093Z         "doc": {
2026-06-23T10:05:47.0001184Z           "complete": false,
2026-06-23T10:05:47.0001264Z           "evidence": []
2026-06-23T10:05:47.0001345Z         },
2026-06-23T10:05:47.0001426Z         "impl": {
2026-06-23T10:05:47.0001521Z           "complete": true,
2026-06-23T10:05:47.0001609Z           "evidence": [
2026-06-23T10:05:47.0001699Z             {
2026-06-23T10:05:47.0001824Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0001914Z               "line": 449
2026-06-23T10:05:47.0002000Z             }
2026-06-23T10:05:47.0002081Z           ]
2026-06-23T10:05:47.0002167Z         },
2026-06-23T10:05:47.0002253Z         "int": {
2026-06-23T10:05:47.0002352Z           "complete": false,
2026-06-23T10:05:47.0002435Z           "evidence": []
2026-06-23T10:05:47.0002515Z         },
2026-06-23T10:05:47.0002600Z         "unit": {
2026-06-23T10:05:47.0002692Z           "complete": true,
2026-06-23T10:05:47.0002788Z           "evidence": [
2026-06-23T10:05:47.0002869Z             {
2026-06-23T10:05:47.0002996Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0003093Z               "line": 1397
2026-06-23T10:05:47.0003178Z             },
2026-06-23T10:05:47.0003268Z             {
2026-06-23T10:05:47.0003384Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0003478Z               "line": 1406
2026-06-23T10:05:47.0003568Z             },
2026-06-23T10:05:47.0003651Z             {
2026-06-23T10:05:47.0003769Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0003860Z               "line": 1422
2026-06-23T10:05:47.0003946Z             },
2026-06-23T10:05:47.0004033Z             {
2026-06-23T10:05:47.0004150Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0004226Z               "line": 1434
2026-06-23T10:05:47.0004311Z             },
2026-06-23T10:05:47.0004402Z             {
2026-06-23T10:05:47.0004519Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0004615Z               "line": 1454
2026-06-23T10:05:47.0004701Z             }
2026-06-23T10:05:47.0004791Z           ]
2026-06-23T10:05:47.0004876Z         }
2026-06-23T10:05:47.0004963Z       }
2026-06-23T10:05:47.0005053Z     },
2026-06-23T10:05:47.0005138Z     {
2026-06-23T10:05:47.0005234Z       "id": "REQ-INSTALL-1",
2026-06-23T10:05:47.0005421Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-23T10:05:47.0005525Z       "requiredStages": [
2026-06-23T10:05:47.0005607Z         "doc",
2026-06-23T10:05:47.0005692Z         "impl",
2026-06-23T10:05:47.0005782Z         "int"
2026-06-23T10:05:47.0005863Z       ],
2026-06-23T10:05:47.0005956Z       "stages": {
2026-06-23T10:05:47.0006040Z         "doc": {
2026-06-23T10:05:47.0006126Z           "complete": true,
2026-06-23T10:05:47.0006213Z           "evidence": [
2026-06-23T10:05:47.0006397Z             {
2026-06-23T10:05:47.0006498Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0006585Z               "line": 775
2026-06-23T10:05:47.0006674Z             }
2026-06-23T10:05:47.0006759Z           ]
2026-06-23T10:05:47.0006845Z         },
2026-06-23T10:05:47.0006931Z         "impl": {
2026-06-23T10:05:47.0007019Z           "complete": true,
2026-06-23T10:05:47.0007118Z           "evidence": [
2026-06-23T10:05:47.0007200Z             {
2026-06-23T10:05:47.0007320Z               "path": "installer/install.ps1",
2026-06-23T10:05:47.0007400Z               "line": 57
2026-06-23T10:05:47.0007558Z             },
2026-06-23T10:05:47.0007635Z             {
2026-06-23T10:05:47.0007744Z               "path": "installer/install.sh",
2026-06-23T10:05:47.0007840Z               "line": 52
2026-06-23T10:05:47.0007921Z             }
2026-06-23T10:05:47.0008006Z           ]
2026-06-23T10:05:47.0008086Z         },
2026-06-23T10:05:47.0008179Z         "int": {
2026-06-23T10:05:47.0008273Z           "complete": true,
2026-06-23T10:05:47.0008359Z           "evidence": [
2026-06-23T10:05:47.0008445Z             {
2026-06-23T10:05:47.0008569Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-23T10:05:47.0008660Z               "line": 21
2026-06-23T10:05:47.0008735Z             }
2026-06-23T10:05:47.0008823Z           ]
2026-06-23T10:05:47.0008902Z         },
2026-06-23T10:05:47.0009075Z         "unit": {
2026-06-23T10:05:47.0009180Z           "complete": false,
2026-06-23T10:05:47.0009284Z           "evidence": []
2026-06-23T10:05:47.0009360Z         }
2026-06-23T10:05:47.0009443Z       }
2026-06-23T10:05:47.0009528Z     },
2026-06-23T10:05:47.0009612Z     {
2026-06-23T10:05:47.0009717Z       "id": "REQ-INSTALL-10",
2026-06-23T10:05:47.0011053Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-23T10:05:47.0011162Z       "requiredStages": [
2026-06-23T10:05:47.0011248Z         "impl",
2026-06-23T10:05:47.0011324Z         "unit"
2026-06-23T10:05:47.0011411Z       ],
2026-06-23T10:05:47.0011505Z       "stages": {
2026-06-23T10:05:47.0011581Z         "doc": {
2026-06-23T10:05:47.0011678Z           "complete": false,
2026-06-23T10:05:47.0011768Z           "evidence": []
2026-06-23T10:05:47.0011861Z         },
2026-06-23T10:05:47.0011938Z         "impl": {
2026-06-23T10:05:47.0012028Z           "complete": true,
2026-06-23T10:05:47.0012118Z           "evidence": [
2026-06-23T10:05:47.0012202Z             {
2026-06-23T10:05:47.0012313Z               "path": "installer/install.ps1",
2026-06-23T10:05:47.0012399Z               "line": 191
2026-06-23T10:05:47.0012484Z             }
2026-06-23T10:05:47.0012579Z           ]
2026-06-23T10:05:47.0012670Z         },
2026-06-23T10:05:47.0012756Z         "int": {
2026-06-23T10:05:47.0012841Z           "complete": false,
2026-06-23T10:05:47.0012927Z           "evidence": []
2026-06-23T10:05:47.0013014Z         },
2026-06-23T10:05:47.0013095Z         "unit": {
2026-06-23T10:05:47.0013184Z           "complete": true,
2026-06-23T10:05:47.0013267Z           "evidence": [
2026-06-23T10:05:47.0013343Z             {
2026-06-23T10:05:47.0013457Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-23T10:05:47.0013543Z               "line": 211
2026-06-23T10:05:47.0013624Z             }
2026-06-23T10:05:47.0013709Z           ]
2026-06-23T10:05:47.0013790Z         }
2026-06-23T10:05:47.0013881Z       }
2026-06-23T10:05:47.0013973Z     },
2026-06-23T10:05:47.0014052Z     {
2026-06-23T10:05:47.0014157Z       "id": "REQ-INSTALL-11",
2026-06-23T10:05:47.0015914Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-23T10:05:47.0016148Z       "requiredStages": [
2026-06-23T10:05:47.0016238Z         "doc",
2026-06-23T10:05:47.0016424Z         "impl",
2026-06-23T10:05:47.0016516Z         "unit"
2026-06-23T10:05:47.0016600Z       ],
2026-06-23T10:05:47.0016695Z       "stages": {
2026-06-23T10:05:47.0016783Z         "doc": {
2026-06-23T10:05:47.0016864Z           "complete": true,
2026-06-23T10:05:47.0016948Z           "evidence": [
2026-06-23T10:05:47.0017030Z             {
2026-06-23T10:05:47.0017136Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0017225Z               "line": 147
2026-06-23T10:05:47.0017315Z             },
2026-06-23T10:05:47.0017400Z             {
2026-06-23T10:05:47.0017505Z               "path": "docs/MANIFEST.md",
2026-06-23T10:05:47.0017589Z               "line": 90
2026-06-23T10:05:47.0017674Z             }
2026-06-23T10:05:47.0017760Z           ]
2026-06-23T10:05:47.0017842Z         },
2026-06-23T10:05:47.0017932Z         "impl": {
2026-06-23T10:05:47.0018017Z           "complete": true,
2026-06-23T10:05:47.0018105Z           "evidence": [
2026-06-23T10:05:47.0018195Z             {
2026-06-23T10:05:47.0018318Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T10:05:47.0018400Z               "line": 223
2026-06-23T10:05:47.0018485Z             },
2026-06-23T10:05:47.0018566Z             {
2026-06-23T10:05:47.0018695Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:47.0018776Z               "line": 115
2026-06-23T10:05:47.0018862Z             },
2026-06-23T10:05:47.0019020Z             {
2026-06-23T10:05:47.0019139Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:47.0019220Z               "line": 188
2026-06-23T10:05:47.0019315Z             },
2026-06-23T10:05:47.0019406Z             {
2026-06-23T10:05:47.0019529Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:47.0019620Z               "line": 206
2026-06-23T10:05:47.0019698Z             },
2026-06-23T10:05:47.0019777Z             {
2026-06-23T10:05:47.0019906Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:47.0020008Z               "line": 327
2026-06-23T10:05:47.0020088Z             },
2026-06-23T10:05:47.0020168Z             {
2026-06-23T10:05:47.0020300Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T10:05:47.0020388Z               "line": 337
2026-06-23T10:05:47.0020468Z             },
2026-06-23T10:05:47.0020553Z             {
2026-06-23T10:05:47.0020669Z               "path": "crates/spt-live/src/digest.rs",
2026-06-23T10:05:47.0020759Z               "line": 88
2026-06-23T10:05:47.0020844Z             },
2026-06-23T10:05:47.0020930Z             {
2026-06-23T10:05:47.0021031Z               "path": "crates/spt-live/src/digest.rs",
2026-06-23T10:05:47.0021126Z               "line": 104
2026-06-23T10:05:47.0021211Z             },
2026-06-23T10:05:47.0021294Z             {
2026-06-23T10:05:47.0021417Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:47.0021502Z               "line": 300
2026-06-23T10:05:47.0021589Z             },
2026-06-23T10:05:47.0021675Z             {
2026-06-23T10:05:47.0021798Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:47.0021884Z               "line": 335
2026-06-23T10:05:47.0021966Z             },
2026-06-23T10:05:47.0022055Z             {
2026-06-23T10:05:47.0022175Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:47.0022271Z               "line": 526
2026-06-23T10:05:47.0022450Z             },
2026-06-23T10:05:47.0022541Z             {
2026-06-23T10:05:47.0022664Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:47.0022753Z               "line": 549
2026-06-23T10:05:47.0022843Z             },
2026-06-23T10:05:47.0022925Z             {
2026-06-23T10:05:47.0023049Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:47.0023129Z               "line": 564
2026-06-23T10:05:47.0023216Z             },
2026-06-23T10:05:47.0023302Z             {
2026-06-23T10:05:47.0023415Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T10:05:47.0023626Z               "line": 492
2026-06-23T10:05:47.0023697Z             }
2026-06-23T10:05:47.0023773Z           ]
2026-06-23T10:05:47.0023860Z         },
2026-06-23T10:05:47.0023946Z         "int": {
2026-06-23T10:05:47.0024045Z           "complete": false,
2026-06-23T10:05:47.0024146Z           "evidence": []
2026-06-23T10:05:47.0024232Z         },
2026-06-23T10:05:47.0024318Z         "unit": {
2026-06-23T10:05:47.0024407Z           "complete": true,
2026-06-23T10:05:47.0024485Z           "evidence": [
2026-06-23T10:05:47.0024575Z             {
2026-06-23T10:05:47.0024698Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:47.0024786Z               "line": 1571
2026-06-23T10:05:47.0024871Z             },
2026-06-23T10:05:47.0024955Z             {
2026-06-23T10:05:47.0025071Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:47.0025162Z               "line": 1624
2026-06-23T10:05:47.0025252Z             },
2026-06-23T10:05:47.0025332Z             {
2026-06-23T10:05:47.0025456Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:47.0025536Z               "line": 1676
2026-06-23T10:05:47.0025625Z             },
2026-06-23T10:05:47.0025710Z             {
2026-06-23T10:05:47.0025821Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:47.0025912Z               "line": 802
2026-06-23T10:05:47.0026001Z             },
2026-06-23T10:05:47.0026088Z             {
2026-06-23T10:05:47.0026217Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:47.0026297Z               "line": 814
2026-06-23T10:05:47.0026389Z             },
2026-06-23T10:05:47.0026475Z             {
2026-06-23T10:05:47.0026593Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:47.0026688Z               "line": 823
2026-06-23T10:05:47.0026770Z             }
2026-06-23T10:05:47.0026860Z           ]
2026-06-23T10:05:47.0026946Z         }
2026-06-23T10:05:47.0027033Z       }
2026-06-23T10:05:47.0027128Z     },
2026-06-23T10:05:47.0027208Z     {
2026-06-23T10:05:47.0027313Z       "id": "REQ-INSTALL-12",
2026-06-23T10:05:47.0029981Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-23T10:05:47.0030090Z       "requiredStages": [
2026-06-23T10:05:47.0030171Z         "doc",
2026-06-23T10:05:47.0030253Z         "impl",
2026-06-23T10:05:47.0030347Z         "unit",
2026-06-23T10:05:47.0030418Z         "int"
2026-06-23T10:05:47.0030505Z       ],
2026-06-23T10:05:47.0030597Z       "stages": {
2026-06-23T10:05:47.0030671Z         "doc": {
2026-06-23T10:05:47.0030880Z           "complete": true,
2026-06-23T10:05:47.0030967Z           "evidence": [
2026-06-23T10:05:47.0031057Z             {
2026-06-23T10:05:47.0031156Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0031253Z               "line": 194
2026-06-23T10:05:47.0031329Z             }
2026-06-23T10:05:47.0031414Z           ]
2026-06-23T10:05:47.0031500Z         },
2026-06-23T10:05:47.0031582Z         "impl": {
2026-06-23T10:05:47.0031681Z           "complete": true,
2026-06-23T10:05:47.0031771Z           "evidence": [
2026-06-23T10:05:47.0031854Z             {
2026-06-23T10:05:47.0031991Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T10:05:47.0032179Z               "line": 27
2026-06-23T10:05:47.0032263Z             },
2026-06-23T10:05:47.0032339Z             {
2026-06-23T10:05:47.0032459Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T10:05:47.0032549Z               "line": 223
2026-06-23T10:05:47.0032630Z             },
2026-06-23T10:05:47.0032720Z             {
2026-06-23T10:05:47.0032832Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0032916Z               "line": 6363
2026-06-23T10:05:47.0033001Z             }
2026-06-23T10:05:47.0033086Z           ]
2026-06-23T10:05:47.0033167Z         },
2026-06-23T10:05:47.0033252Z         "int": {
2026-06-23T10:05:47.0033346Z           "complete": true,
2026-06-23T10:05:47.0033428Z           "evidence": [
2026-06-23T10:05:47.0033524Z             {
2026-06-23T10:05:47.0033651Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-23T10:05:47.0033747Z               "line": 19
2026-06-23T10:05:47.0033834Z             }
2026-06-23T10:05:47.0033924Z           ]
2026-06-23T10:05:47.0034009Z         },
2026-06-23T10:05:47.0034096Z         "unit": {
2026-06-23T10:05:47.0034191Z           "complete": true,
2026-06-23T10:05:47.0034276Z           "evidence": [
2026-06-23T10:05:47.0034367Z             {
2026-06-23T10:05:47.0034487Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T10:05:47.0034572Z               "line": 395
2026-06-23T10:05:47.0034658Z             },
2026-06-23T10:05:47.0034745Z             {
2026-06-23T10:05:47.0034863Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T10:05:47.0034944Z               "line": 421
2026-06-23T10:05:47.0035031Z             },
2026-06-23T10:05:47.0035121Z             {
2026-06-23T10:05:47.0035231Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T10:05:47.0035317Z               "line": 440
2026-06-23T10:05:47.0035403Z             },
2026-06-23T10:05:47.0035483Z             {
2026-06-23T10:05:47.0035597Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T10:05:47.0035675Z               "line": 475
2026-06-23T10:05:47.0035765Z             },
2026-06-23T10:05:47.0035849Z             {
2026-06-23T10:05:47.0035953Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0036049Z               "line": 10203
2026-06-23T10:05:47.0036138Z             }
2026-06-23T10:05:47.0036232Z           ]
2026-06-23T10:05:47.0036319Z         }
2026-06-23T10:05:47.0036396Z       }
2026-06-23T10:05:47.0036476Z     },
2026-06-23T10:05:47.0036557Z     {
2026-06-23T10:05:47.0036644Z       "id": "REQ-INSTALL-2",
2026-06-23T10:05:47.0036782Z       "title": "Marketplace-repackaging-friendly install",
2026-06-23T10:05:47.0036881Z       "requiredStages": [
2026-06-23T10:05:47.0036959Z         "doc"
2026-06-23T10:05:47.0037049Z       ],
2026-06-23T10:05:47.0037130Z       "stages": {
2026-06-23T10:05:47.0037215Z         "doc": {
2026-06-23T10:05:47.0037306Z           "complete": true,
2026-06-23T10:05:47.0037406Z           "evidence": [
2026-06-23T10:05:47.0037482Z             {
2026-06-23T10:05:47.0037583Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0037669Z               "line": 776
2026-06-23T10:05:47.0037748Z             }
2026-06-23T10:05:47.0037835Z           ]
2026-06-23T10:05:47.0037922Z         },
2026-06-23T10:05:47.0038012Z         "impl": {
2026-06-23T10:05:47.0038097Z           "complete": false,
2026-06-23T10:05:47.0038270Z           "evidence": []
2026-06-23T10:05:47.0038355Z         },
2026-06-23T10:05:47.0038435Z         "int": {
2026-06-23T10:05:47.0038520Z           "complete": false,
2026-06-23T10:05:47.0038606Z           "evidence": []
2026-06-23T10:05:47.0038695Z         },
2026-06-23T10:05:47.0038780Z         "unit": {
2026-06-23T10:05:47.0038867Z           "complete": false,
2026-06-23T10:05:47.0039043Z           "evidence": []
2026-06-23T10:05:47.0039124Z         }
2026-06-23T10:05:47.0039210Z       }
2026-06-23T10:05:47.0039291Z     },
2026-06-23T10:05:47.0039376Z     {
2026-06-23T10:05:47.0039578Z       "id": "REQ-INSTALL-3",
2026-06-23T10:05:47.0039719Z       "title": "Idempotent + interactive-optional first run",
2026-06-23T10:05:47.0039801Z       "requiredStages": [
2026-06-23T10:05:47.0039897Z         "impl",
2026-06-23T10:05:47.0039972Z         "int"
2026-06-23T10:05:47.0040048Z       ],
2026-06-23T10:05:47.0040140Z       "stages": {
2026-06-23T10:05:47.0040226Z         "doc": {
2026-06-23T10:05:47.0040321Z           "complete": false,
2026-06-23T10:05:47.0040416Z           "evidence": []
2026-06-23T10:05:47.0040503Z         },
2026-06-23T10:05:47.0040588Z         "impl": {
2026-06-23T10:05:47.0040683Z           "complete": true,
2026-06-23T10:05:47.0040770Z           "evidence": [
2026-06-23T10:05:47.0040856Z             {
2026-06-23T10:05:47.0040974Z               "path": "installer/install.ps1",
2026-06-23T10:05:47.0041060Z               "line": 100
2026-06-23T10:05:47.0041152Z             },
2026-06-23T10:05:47.0041241Z             {
2026-06-23T10:05:47.0041349Z               "path": "installer/install.ps1",
2026-06-23T10:05:47.0041455Z               "line": 111
2026-06-23T10:05:47.0041542Z             },
2026-06-23T10:05:47.0041626Z             {
2026-06-23T10:05:47.0041726Z               "path": "installer/install.sh",
2026-06-23T10:05:47.0041817Z               "line": 79
2026-06-23T10:05:47.0041903Z             }
2026-06-23T10:05:47.0041988Z           ]
2026-06-23T10:05:47.0042080Z         },
2026-06-23T10:05:47.0042165Z         "int": {
2026-06-23T10:05:47.0042251Z           "complete": true,
2026-06-23T10:05:47.0042327Z           "evidence": [
2026-06-23T10:05:47.0042419Z             {
2026-06-23T10:05:47.0042542Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-23T10:05:47.0042627Z               "line": 167
2026-06-23T10:05:47.0042704Z             }
2026-06-23T10:05:47.0042790Z           ]
2026-06-23T10:05:47.0042871Z         },
2026-06-23T10:05:47.0042947Z         "unit": {
2026-06-23T10:05:47.0043034Z           "complete": false,
2026-06-23T10:05:47.0043133Z           "evidence": []
2026-06-23T10:05:47.0043218Z         }
2026-06-23T10:05:47.0043300Z       }
2026-06-23T10:05:47.0043373Z     },
2026-06-23T10:05:47.0043462Z     {
2026-06-23T10:05:47.0043542Z       "id": "REQ-INSTALL-4",
2026-06-23T10:05:47.0044145Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-23T10:05:47.0044249Z       "requiredStages": [
2026-06-23T10:05:47.0044336Z         "impl",
2026-06-23T10:05:47.0044422Z         "unit"
2026-06-23T10:05:47.0044503Z       ],
2026-06-23T10:05:47.0044583Z       "stages": {
2026-06-23T10:05:47.0044670Z         "doc": {
2026-06-23T10:05:47.0044761Z           "complete": false,
2026-06-23T10:05:47.0044860Z           "evidence": []
2026-06-23T10:05:47.0044942Z         },
2026-06-23T10:05:47.0045028Z         "impl": {
2026-06-23T10:05:47.0045123Z           "complete": true,
2026-06-23T10:05:47.0045213Z           "evidence": [
2026-06-23T10:05:47.0045300Z             {
2026-06-23T10:05:47.0045433Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T10:05:47.0045523Z               "line": 165
2026-06-23T10:05:47.0045606Z             },
2026-06-23T10:05:47.0045690Z             {
2026-06-23T10:05:47.0045814Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0046019Z               "line": 29
2026-06-23T10:05:47.0046115Z             },
2026-06-23T10:05:47.0046197Z             {
2026-06-23T10:05:47.0046320Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0046414Z               "line": 288
2026-06-23T10:05:47.0046495Z             },
2026-06-23T10:05:47.0046576Z             {
2026-06-23T10:05:47.0046693Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0046788Z               "line": 356
2026-06-23T10:05:47.0046879Z             },
2026-06-23T10:05:47.0047041Z             {
2026-06-23T10:05:47.0047155Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0047242Z               "line": 386
2026-06-23T10:05:47.0047313Z             },
2026-06-23T10:05:47.0047399Z             {
2026-06-23T10:05:47.0047524Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0047609Z               "line": 434
2026-06-23T10:05:47.0047699Z             },
2026-06-23T10:05:47.0047785Z             {
2026-06-23T10:05:47.0047890Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0047985Z               "line": 6051
2026-06-23T10:05:47.0048061Z             }
2026-06-23T10:05:47.0048148Z           ]
2026-06-23T10:05:47.0048234Z         },
2026-06-23T10:05:47.0048318Z         "int": {
2026-06-23T10:05:47.0048405Z           "complete": false,
2026-06-23T10:05:47.0048501Z           "evidence": []
2026-06-23T10:05:47.0048577Z         },
2026-06-23T10:05:47.0048662Z         "unit": {
2026-06-23T10:05:47.0048749Z           "complete": true,
2026-06-23T10:05:47.0048835Z           "evidence": [
2026-06-23T10:05:47.0048920Z             {
2026-06-23T10:05:47.0049142Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T10:05:47.0049232Z               "line": 381
2026-06-23T10:05:47.0049317Z             },
2026-06-23T10:05:47.0049407Z             {
2026-06-23T10:05:47.0049532Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0049626Z               "line": 808
2026-06-23T10:05:47.0049712Z             },
2026-06-23T10:05:47.0049790Z             {
2026-06-23T10:05:47.0049928Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0050023Z               "line": 849
2026-06-23T10:05:47.0050104Z             },
2026-06-23T10:05:47.0050180Z             {
2026-06-23T10:05:47.0050289Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0050386Z               "line": 869
2026-06-23T10:05:47.0050471Z             },
2026-06-23T10:05:47.0050552Z             {
2026-06-23T10:05:47.0050662Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0050753Z               "line": 9799
2026-06-23T10:05:47.0050838Z             }
2026-06-23T10:05:47.0050919Z           ]
2026-06-23T10:05:47.0051000Z         }
2026-06-23T10:05:47.0051073Z       }
2026-06-23T10:05:47.0051157Z     },
2026-06-23T10:05:47.0051234Z     {
2026-06-23T10:05:47.0051325Z       "id": "REQ-INSTALL-5",
2026-06-23T10:05:47.0051792Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-23T10:05:47.0051891Z       "requiredStages": [
2026-06-23T10:05:47.0051967Z         "impl",
2026-06-23T10:05:47.0052054Z         "int"
2026-06-23T10:05:47.0052139Z       ],
2026-06-23T10:05:47.0052229Z       "stages": {
2026-06-23T10:05:47.0052315Z         "doc": {
2026-06-23T10:05:47.0052401Z           "complete": false,
2026-06-23T10:05:47.0052491Z           "evidence": []
2026-06-23T10:05:47.0052572Z         },
2026-06-23T10:05:47.0052659Z         "impl": {
2026-06-23T10:05:47.0052754Z           "complete": true,
2026-06-23T10:05:47.0052849Z           "evidence": [
2026-06-23T10:05:47.0052935Z             {
2026-06-23T10:05:47.0053040Z               "path": "installer/install.ps1",
2026-06-23T10:05:47.0053135Z               "line": 5
2026-06-23T10:05:47.0053332Z             },
2026-06-23T10:05:47.0053416Z             {
2026-06-23T10:05:47.0053517Z               "path": "installer/install.sh",
2026-06-23T10:05:47.0053613Z               "line": 6
2026-06-23T10:05:47.0053693Z             }
2026-06-23T10:05:47.0053769Z           ]
2026-06-23T10:05:47.0053851Z         },
2026-06-23T10:05:47.0053933Z         "int": {
2026-06-23T10:05:47.0054022Z           "complete": true,
2026-06-23T10:05:47.0054117Z           "evidence": [
2026-06-23T10:05:47.0054202Z             {
2026-06-23T10:05:47.0054316Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-23T10:05:47.0054529Z               "line": 22
2026-06-23T10:05:47.0054620Z             }
2026-06-23T10:05:47.0054705Z           ]
2026-06-23T10:05:47.0054791Z         },
2026-06-23T10:05:47.0054872Z         "unit": {
2026-06-23T10:05:47.0054973Z           "complete": false,
2026-06-23T10:05:47.0055058Z           "evidence": []
2026-06-23T10:05:47.0055143Z         }
2026-06-23T10:05:47.0055236Z       }
2026-06-23T10:05:47.0055316Z     },
2026-06-23T10:05:47.0055401Z     {
2026-06-23T10:05:47.0055493Z       "id": "REQ-INSTALL-6",
2026-06-23T10:05:47.0056670Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-23T10:05:47.0056771Z       "requiredStages": [
2026-06-23T10:05:47.0056866Z         "impl",
2026-06-23T10:05:47.0056951Z         "unit"
2026-06-23T10:05:47.0057031Z       ],
2026-06-23T10:05:47.0057122Z       "stages": {
2026-06-23T10:05:47.0057197Z         "doc": {
2026-06-23T10:05:47.0057301Z           "complete": false,
2026-06-23T10:05:47.0057391Z           "evidence": []
2026-06-23T10:05:47.0057473Z         },
2026-06-23T10:05:47.0057559Z         "impl": {
2026-06-23T10:05:47.0057658Z           "complete": true,
2026-06-23T10:05:47.0057744Z           "evidence": [
2026-06-23T10:05:47.0057831Z             {
2026-06-23T10:05:47.0057954Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:47.0058045Z               "line": 61
2026-06-23T10:05:47.0058131Z             },
2026-06-23T10:05:47.0058217Z             {
2026-06-23T10:05:47.0058340Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:47.0058432Z               "line": 641
2026-06-23T10:05:47.0058512Z             },
2026-06-23T10:05:47.0058598Z             {
2026-06-23T10:05:47.0058713Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T10:05:47.0058808Z               "line": 191
2026-06-23T10:05:47.0058893Z             },
2026-06-23T10:05:47.0059061Z             {
2026-06-23T10:05:47.0059189Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T10:05:47.0059270Z               "line": 276
2026-06-23T10:05:47.0059362Z             },
2026-06-23T10:05:47.0059443Z             {
2026-06-23T10:05:47.0059550Z               "path": "crates/spt/src/main.rs",
2026-06-23T10:05:47.0059636Z               "line": 43
2026-06-23T10:05:47.0059722Z             },
2026-06-23T10:05:47.0059811Z             {
2026-06-23T10:05:47.0059910Z               "path": "installer/install.sh",
2026-06-23T10:05:47.0059996Z               "line": 104
2026-06-23T10:05:47.0060078Z             }
2026-06-23T10:05:47.0060168Z           ]
2026-06-23T10:05:47.0060248Z         },
2026-06-23T10:05:47.0060335Z         "int": {
2026-06-23T10:05:47.0060430Z           "complete": false,
2026-06-23T10:05:47.0060520Z           "evidence": []
2026-06-23T10:05:47.0060597Z         },
2026-06-23T10:05:47.0060674Z         "unit": {
2026-06-23T10:05:47.0060769Z           "complete": true,
2026-06-23T10:05:47.0060849Z           "evidence": [
2026-06-23T10:05:47.0060931Z             {
2026-06-23T10:05:47.0061055Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T10:05:47.0061236Z               "line": 894
2026-06-23T10:05:47.0061328Z             }
2026-06-23T10:05:47.0061412Z           ]
2026-06-23T10:05:47.0061498Z         }
2026-06-23T10:05:47.0061585Z       }
2026-06-23T10:05:47.0061666Z     },
2026-06-23T10:05:47.0061750Z     {
2026-06-23T10:05:47.0061837Z       "id": "REQ-INSTALL-7",
2026-06-23T10:05:47.0062909Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-23T10:05:47.0063123Z       "requiredStages": [
2026-06-23T10:05:47.0063210Z         "impl"
2026-06-23T10:05:47.0063300Z       ],
2026-06-23T10:05:47.0063385Z       "stages": {
2026-06-23T10:05:47.0063466Z         "doc": {
2026-06-23T10:05:47.0063558Z           "complete": false,
2026-06-23T10:05:47.0063657Z           "evidence": []
2026-06-23T10:05:47.0063742Z         },
2026-06-23T10:05:47.0063835Z         "impl": {
2026-06-23T10:05:47.0063934Z           "complete": true,
2026-06-23T10:05:47.0064024Z           "evidence": [
2026-06-23T10:05:47.0064110Z             {
2026-06-23T10:05:47.0064221Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0064315Z               "line": 4575
2026-06-23T10:05:47.0064401Z             },
2026-06-23T10:05:47.0064488Z             {
2026-06-23T10:05:47.0064587Z               "path": "installer/install.ps1",
2026-06-23T10:05:47.0064677Z               "line": 157
2026-06-23T10:05:47.0064767Z             }
2026-06-23T10:05:47.0064848Z           ]
2026-06-23T10:05:47.0064932Z         },
2026-06-23T10:05:47.0065023Z         "int": {
2026-06-23T10:05:47.0065113Z           "complete": false,
2026-06-23T10:05:47.0065199Z           "evidence": []
2026-06-23T10:05:47.0065280Z         },
2026-06-23T10:05:47.0065370Z         "unit": {
2026-06-23T10:05:47.0065456Z           "complete": false,
2026-06-23T10:05:47.0065542Z           "evidence": []
2026-06-23T10:05:47.0065627Z         }
2026-06-23T10:05:47.0065718Z       }
2026-06-23T10:05:47.0065805Z     },
2026-06-23T10:05:47.0065891Z     {
2026-06-23T10:05:47.0065985Z       "id": "REQ-INSTALL-8",
2026-06-23T10:05:47.0066992Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-23T10:05:47.0067102Z       "requiredStages": [
2026-06-23T10:05:47.0067191Z         "impl"
2026-06-23T10:05:47.0067273Z       ],
2026-06-23T10:05:47.0067360Z       "stages": {
2026-06-23T10:05:47.0067445Z         "doc": {
2026-06-23T10:05:47.0067549Z           "complete": false,
2026-06-23T10:05:47.0067639Z           "evidence": []
2026-06-23T10:05:47.0067725Z         },
2026-06-23T10:05:47.0067813Z         "impl": {
2026-06-23T10:05:47.0067894Z           "complete": true,
2026-06-23T10:05:47.0067975Z           "evidence": [
2026-06-23T10:05:47.0070561Z             {
2026-06-23T10:05:47.0070719Z               "path": "installer/install.ps1",
2026-06-23T10:05:47.0070818Z               "line": 184
2026-06-23T10:05:47.0070910Z             },
2026-06-23T10:05:47.0071000Z             {
2026-06-23T10:05:47.0071104Z               "path": "installer/install.sh",
2026-06-23T10:05:47.0071215Z               "line": 121
2026-06-23T10:05:47.0071291Z             }
2026-06-23T10:05:47.0071381Z           ]
2026-06-23T10:05:47.0071457Z         },
2026-06-23T10:05:47.0071544Z         "int": {
2026-06-23T10:05:47.0071634Z           "complete": false,
2026-06-23T10:05:47.0071720Z           "evidence": []
2026-06-23T10:05:47.0071801Z         },
2026-06-23T10:05:47.0072016Z         "unit": {
2026-06-23T10:05:47.0072116Z           "complete": false,
2026-06-23T10:05:47.0072207Z           "evidence": []
2026-06-23T10:05:47.0072292Z         }
2026-06-23T10:05:47.0072382Z       }
2026-06-23T10:05:47.0072460Z     },
2026-06-23T10:05:47.0072536Z     {
2026-06-23T10:05:47.0072626Z       "id": "REQ-INSTALL-9",
2026-06-23T10:05:47.0073846Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-23T10:05:47.0074046Z       "requiredStages": [
2026-06-23T10:05:47.0074132Z         "doc",
2026-06-23T10:05:47.0074217Z         "impl",
2026-06-23T10:05:47.0074302Z         "unit"
2026-06-23T10:05:47.0074385Z       ],
2026-06-23T10:05:47.0074476Z       "stages": {
2026-06-23T10:05:47.0074556Z         "doc": {
2026-06-23T10:05:47.0074656Z           "complete": true,
2026-06-23T10:05:47.0074738Z           "evidence": [
2026-06-23T10:05:47.0074823Z             {
2026-06-23T10:05:47.0074923Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0075009Z               "line": 792
2026-06-23T10:05:47.0075091Z             }
2026-06-23T10:05:47.0075180Z           ]
2026-06-23T10:05:47.0075266Z         },
2026-06-23T10:05:47.0075347Z         "impl": {
2026-06-23T10:05:47.0075442Z           "complete": true,
2026-06-23T10:05:47.0075521Z           "evidence": [
2026-06-23T10:05:47.0075611Z             {
2026-06-23T10:05:47.0075721Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0075808Z               "line": 3081
2026-06-23T10:05:47.0075897Z             },
2026-06-23T10:05:47.0075983Z             {
2026-06-23T10:05:47.0076088Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0076164Z               "line": 3150
2026-06-23T10:05:47.0076259Z             },
2026-06-23T10:05:47.0076346Z             {
2026-06-23T10:05:47.0076446Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0076540Z               "line": 3217
2026-06-23T10:05:47.0076627Z             }
2026-06-23T10:05:47.0076704Z           ]
2026-06-23T10:05:47.0076785Z         },
2026-06-23T10:05:47.0076874Z         "int": {
2026-06-23T10:05:47.0076961Z           "complete": false,
2026-06-23T10:05:47.0077047Z           "evidence": []
2026-06-23T10:05:47.0077137Z         },
2026-06-23T10:05:47.0077223Z         "unit": {
2026-06-23T10:05:47.0077324Z           "complete": true,
2026-06-23T10:05:47.0077408Z           "evidence": [
2026-06-23T10:05:47.0077494Z             {
2026-06-23T10:05:47.0077596Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0077686Z               "line": 8968
2026-06-23T10:05:47.0077771Z             },
2026-06-23T10:05:47.0077853Z             {
2026-06-23T10:05:47.0077954Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0078043Z               "line": 9829
2026-06-23T10:05:47.0078133Z             }
2026-06-23T10:05:47.0078209Z           ]
2026-06-23T10:05:47.0078304Z         }
2026-06-23T10:05:47.0078392Z       }
2026-06-23T10:05:47.0078473Z     },
2026-06-23T10:05:47.0078559Z     {
2026-06-23T10:05:47.0078641Z       "id": "REQ-KICK-1",
2026-06-23T10:05:47.0081164Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-23T10:05:47.0081383Z       "requiredStages": [
2026-06-23T10:05:47.0081470Z         "doc",
2026-06-23T10:05:47.0081551Z         "impl",
2026-06-23T10:05:47.0081646Z         "unit",
2026-06-23T10:05:47.0081727Z         "int"
2026-06-23T10:05:47.0081813Z       ],
2026-06-23T10:05:47.0081903Z       "stages": {
2026-06-23T10:05:47.0081989Z         "doc": {
2026-06-23T10:05:47.0082175Z           "complete": true,
2026-06-23T10:05:47.0082266Z           "evidence": [
2026-06-23T10:05:47.0082356Z             {
2026-06-23T10:05:47.0082452Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0082542Z               "line": 355
2026-06-23T10:05:47.0082628Z             }
2026-06-23T10:05:47.0082710Z           ]
2026-06-23T10:05:47.0082786Z         },
2026-06-23T10:05:47.0082880Z         "impl": {
2026-06-23T10:05:47.0082966Z           "complete": true,
2026-06-23T10:05:47.0083059Z           "evidence": [
2026-06-23T10:05:47.0083143Z             {
2026-06-23T10:05:47.0083272Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-23T10:05:47.0083369Z               "line": 41
2026-06-23T10:05:47.0083453Z             },
2026-06-23T10:05:47.0083533Z             {
2026-06-23T10:05:47.0083642Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0083729Z               "line": 738
2026-06-23T10:05:47.0083806Z             }
2026-06-23T10:05:47.0083890Z           ]
2026-06-23T10:05:47.0083981Z         },
2026-06-23T10:05:47.0084063Z         "int": {
2026-06-23T10:05:47.0084158Z           "complete": true,
2026-06-23T10:05:47.0084252Z           "evidence": [
2026-06-23T10:05:47.0084330Z             {
2026-06-23T10:05:47.0084459Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T10:05:47.0084539Z               "line": 922
2026-06-23T10:05:47.0084630Z             }
2026-06-23T10:05:47.0084716Z           ]
2026-06-23T10:05:47.0084802Z         },
2026-06-23T10:05:47.0084882Z         "unit": {
2026-06-23T10:05:47.0084969Z           "complete": true,
2026-06-23T10:05:47.0085064Z           "evidence": [
2026-06-23T10:05:47.0085150Z             {
2026-06-23T10:05:47.0085270Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-23T10:05:47.0085355Z               "line": 205
2026-06-23T10:05:47.0085444Z             }
2026-06-23T10:05:47.0085531Z           ]
2026-06-23T10:05:47.0085613Z         }
2026-06-23T10:05:47.0085703Z       }
2026-06-23T10:05:47.0085792Z     },
2026-06-23T10:05:47.0085873Z     {
2026-06-23T10:05:47.0085959Z       "id": "REQ-MANIFEST-1",
2026-06-23T10:05:47.0086143Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-23T10:05:47.0086243Z       "requiredStages": [
2026-06-23T10:05:47.0086315Z         "doc",
2026-06-23T10:05:47.0086405Z         "impl",
2026-06-23T10:05:47.0086490Z         "unit"
2026-06-23T10:05:47.0086586Z       ],
2026-06-23T10:05:47.0086672Z       "stages": {
2026-06-23T10:05:47.0086767Z         "doc": {
2026-06-23T10:05:47.0086853Z           "complete": true,
2026-06-23T10:05:47.0086945Z           "evidence": [
2026-06-23T10:05:47.0087039Z             {
2026-06-23T10:05:47.0087129Z               "path": "docs/MANIFEST.md",
2026-06-23T10:05:47.0087231Z               "line": 19
2026-06-23T10:05:47.0087311Z             }
2026-06-23T10:05:47.0087396Z           ]
2026-06-23T10:05:47.0087482Z         },
2026-06-23T10:05:47.0087564Z         "impl": {
2026-06-23T10:05:47.0087664Z           "complete": true,
2026-06-23T10:05:47.0087749Z           "evidence": [
2026-06-23T10:05:47.0087832Z             {
2026-06-23T10:05:47.0087959Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0088049Z               "line": 18
2026-06-23T10:05:47.0088127Z             }
2026-06-23T10:05:47.0088208Z           ]
2026-06-23T10:05:47.0088293Z         },
2026-06-23T10:05:47.0088466Z         "int": {
2026-06-23T10:05:47.0088566Z           "complete": false,
2026-06-23T10:05:47.0088645Z           "evidence": []
2026-06-23T10:05:47.0088730Z         },
2026-06-23T10:05:47.0088821Z         "unit": {
2026-06-23T10:05:47.0088911Z           "complete": true,
2026-06-23T10:05:47.0089071Z           "evidence": [
2026-06-23T10:05:47.0089158Z             {
2026-06-23T10:05:47.0089282Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0089367Z               "line": 1076
2026-06-23T10:05:47.0089449Z             },
2026-06-23T10:05:47.0089534Z             {
2026-06-23T10:05:47.0089759Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0089854Z               "line": 1372
2026-06-23T10:05:47.0089935Z             },
2026-06-23T10:05:47.0090020Z             {
2026-06-23T10:05:47.0090136Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0090231Z               "line": 1384
2026-06-23T10:05:47.0090321Z             },
2026-06-23T10:05:47.0090408Z             {
2026-06-23T10:05:47.0090531Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0090612Z               "line": 1395
2026-06-23T10:05:47.0090703Z             },
2026-06-23T10:05:47.0090780Z             {
2026-06-23T10:05:47.0090898Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0090989Z               "line": 1412
2026-06-23T10:05:47.0091062Z             },
2026-06-23T10:05:47.0091141Z             {
2026-06-23T10:05:47.0091255Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0091345Z               "line": 1426
2026-06-23T10:05:47.0091426Z             },
2026-06-23T10:05:47.0091510Z             {
2026-06-23T10:05:47.0091633Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0091720Z               "line": 1542
2026-06-23T10:05:47.0091811Z             },
2026-06-23T10:05:47.0091896Z             {
2026-06-23T10:05:47.0092016Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0092106Z               "line": 1557
2026-06-23T10:05:47.0092191Z             },
2026-06-23T10:05:47.0092277Z             {
2026-06-23T10:05:47.0092387Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0092483Z               "line": 1668
2026-06-23T10:05:47.0092563Z             },
2026-06-23T10:05:47.0092636Z             {
2026-06-23T10:05:47.0092754Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0092849Z               "line": 1679
2026-06-23T10:05:47.0092936Z             }
2026-06-23T10:05:47.0093022Z           ]
2026-06-23T10:05:47.0093103Z         }
2026-06-23T10:05:47.0093188Z       }
2026-06-23T10:05:47.0093270Z     },
2026-06-23T10:05:47.0093355Z     {
2026-06-23T10:05:47.0093460Z       "id": "REQ-MANIFEST-2",
2026-06-23T10:05:47.0093967Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-23T10:05:47.0094069Z       "requiredStages": [
2026-06-23T10:05:47.0094154Z         "doc",
2026-06-23T10:05:47.0094241Z         "impl",
2026-06-23T10:05:47.0094333Z         "unit"
2026-06-23T10:05:47.0094422Z       ],
2026-06-23T10:05:47.0094508Z       "stages": {
2026-06-23T10:05:47.0094585Z         "doc": {
2026-06-23T10:05:47.0094680Z           "complete": true,
2026-06-23T10:05:47.0094775Z           "evidence": [
2026-06-23T10:05:47.0094861Z             {
2026-06-23T10:05:47.0094952Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0095042Z               "line": 75
2026-06-23T10:05:47.0095132Z             }
2026-06-23T10:05:47.0095215Z           ]
2026-06-23T10:05:47.0095300Z         },
2026-06-23T10:05:47.0095390Z         "impl": {
2026-06-23T10:05:47.0095471Z           "complete": true,
2026-06-23T10:05:47.0095572Z           "evidence": [
2026-06-23T10:05:47.0095653Z             {
2026-06-23T10:05:47.0095771Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0095976Z               "line": 82
2026-06-23T10:05:47.0096058Z             },
2026-06-23T10:05:47.0096139Z             {
2026-06-23T10:05:47.0096263Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T10:05:47.0096362Z               "line": 15
2026-06-23T10:05:47.0096452Z             },
2026-06-23T10:05:47.0096533Z             {
2026-06-23T10:05:47.0096655Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T10:05:47.0096745Z               "line": 65
2026-06-23T10:05:47.0096822Z             },
2026-06-23T10:05:47.0096904Z             {
2026-06-23T10:05:47.0097103Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T10:05:47.0097190Z               "line": 83
2026-06-23T10:05:47.0097270Z             },
2026-06-23T10:05:47.0097351Z             {
2026-06-23T10:05:47.0097462Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T10:05:47.0097547Z               "line": 183
2026-06-23T10:05:47.0097633Z             },
2026-06-23T10:05:47.0097723Z             {
2026-06-23T10:05:47.0097838Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0097924Z               "line": 527
2026-06-23T10:05:47.0098014Z             },
2026-06-23T10:05:47.0098096Z             {
2026-06-23T10:05:47.0098214Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0098304Z               "line": 553
2026-06-23T10:05:47.0098387Z             },
2026-06-23T10:05:47.0098473Z             {
2026-06-23T10:05:47.0098591Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0098687Z               "line": 671
2026-06-23T10:05:47.0098768Z             },
2026-06-23T10:05:47.0098848Z             {
2026-06-23T10:05:47.0099055Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0099145Z               "line": 696
2026-06-23T10:05:47.0099229Z             },
2026-06-23T10:05:47.0099309Z             {
2026-06-23T10:05:47.0099420Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0099513Z               "line": 719
2026-06-23T10:05:47.0099593Z             },
2026-06-23T10:05:47.0099675Z             {
2026-06-23T10:05:47.0099795Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0099889Z               "line": 734
2026-06-23T10:05:47.0099975Z             },
2026-06-23T10:05:47.0100057Z             {
2026-06-23T10:05:47.0100166Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0100251Z               "line": 6231
2026-06-23T10:05:47.0100334Z             },
2026-06-23T10:05:47.0100414Z             {
2026-06-23T10:05:47.0100518Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0100600Z               "line": 6245
2026-06-23T10:05:47.0100691Z             },
2026-06-23T10:05:47.0100771Z             {
2026-06-23T10:05:47.0100881Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0100968Z               "line": 6279
2026-06-23T10:05:47.0101049Z             }
2026-06-23T10:05:47.0101139Z           ]
2026-06-23T10:05:47.0101225Z         },
2026-06-23T10:05:47.0101311Z         "int": {
2026-06-23T10:05:47.0101405Z           "complete": false,
2026-06-23T10:05:47.0101506Z           "evidence": []
2026-06-23T10:05:47.0101593Z         },
2026-06-23T10:05:47.0101679Z         "unit": {
2026-06-23T10:05:47.0101767Z           "complete": true,
2026-06-23T10:05:47.0101852Z           "evidence": [
2026-06-23T10:05:47.0101939Z             {
2026-06-23T10:05:47.0102056Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T10:05:47.0102141Z               "line": 921
2026-06-23T10:05:47.0102232Z             },
2026-06-23T10:05:47.0102318Z             {
2026-06-23T10:05:47.0102432Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T10:05:47.0102513Z               "line": 211
2026-06-23T10:05:47.0102605Z             },
2026-06-23T10:05:47.0102686Z             {
2026-06-23T10:05:47.0102790Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T10:05:47.0102981Z               "line": 272
2026-06-23T10:05:47.0103061Z             },
2026-06-23T10:05:47.0103147Z             {
2026-06-23T10:05:47.0103263Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T10:05:47.0103358Z               "line": 313
2026-06-23T10:05:47.0103438Z             },
2026-06-23T10:05:47.0103520Z             {
2026-06-23T10:05:47.0103634Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T10:05:47.0103719Z               "line": 325
2026-06-23T10:05:47.0103801Z             },
2026-06-23T10:05:47.0103878Z             {
2026-06-23T10:05:47.0104096Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T10:05:47.0104174Z               "line": 336
2026-06-23T10:05:47.0104263Z             },
2026-06-23T10:05:47.0104354Z             {
2026-06-23T10:05:47.0104469Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T10:05:47.0104555Z               "line": 345
2026-06-23T10:05:47.0104644Z             },
2026-06-23T10:05:47.0104734Z             {
2026-06-23T10:05:47.0104849Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T10:05:47.0104940Z               "line": 361
2026-06-23T10:05:47.0105025Z             },
2026-06-23T10:05:47.0105111Z             {
2026-06-23T10:05:47.0105221Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T10:05:47.0105306Z               "line": 444
2026-06-23T10:05:47.0105397Z             },
2026-06-23T10:05:47.0105479Z             {
2026-06-23T10:05:47.0105598Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0105687Z               "line": 958
2026-06-23T10:05:47.0105770Z             },
2026-06-23T10:05:47.0105855Z             {
2026-06-23T10:05:47.0105969Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0106051Z               "line": 982
2026-06-23T10:05:47.0106141Z             },
2026-06-23T10:05:47.0106227Z             {
2026-06-23T10:05:47.0106346Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0106442Z               "line": 1008
2026-06-23T10:05:47.0106532Z             },
2026-06-23T10:05:47.0106613Z             {
2026-06-23T10:05:47.0106734Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0106819Z               "line": 1027
2026-06-23T10:05:47.0106903Z             },
2026-06-23T10:05:47.0106988Z             {
2026-06-23T10:05:47.0107098Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0107192Z               "line": 1058
2026-06-23T10:05:47.0107272Z             },
2026-06-23T10:05:47.0107349Z             {
2026-06-23T10:05:47.0107469Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T10:05:47.0107554Z               "line": 309
2026-06-23T10:05:47.0107644Z             },
2026-06-23T10:05:47.0107721Z             {
2026-06-23T10:05:47.0107830Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T10:05:47.0107915Z               "line": 606
2026-06-23T10:05:47.0108003Z             },
2026-06-23T10:05:47.0108093Z             {
2026-06-23T10:05:47.0108188Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0108279Z               "line": 10148
2026-06-23T10:05:47.0108351Z             },
2026-06-23T10:05:47.0108432Z             {
2026-06-23T10:05:47.0108536Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0108632Z               "line": 11096
2026-06-23T10:05:47.0108713Z             }
2026-06-23T10:05:47.0108799Z           ]
2026-06-23T10:05:47.0108884Z         }
2026-06-23T10:05:47.0109042Z       }
2026-06-23T10:05:47.0109122Z     },
2026-06-23T10:05:47.0109208Z     {
2026-06-23T10:05:47.0109300Z       "id": "REQ-MANIFEST-3",
2026-06-23T10:05:47.0109937Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-23T10:05:47.0110040Z       "requiredStages": [
2026-06-23T10:05:47.0110230Z         "doc",
2026-06-23T10:05:47.0110321Z         "impl",
2026-06-23T10:05:47.0110402Z         "unit"
2026-06-23T10:05:47.0110478Z       ],
2026-06-23T10:05:47.0110569Z       "stages": {
2026-06-23T10:05:47.0110660Z         "doc": {
2026-06-23T10:05:47.0110745Z           "complete": true,
2026-06-23T10:05:47.0110831Z           "evidence": [
2026-06-23T10:05:47.0110908Z             {
2026-06-23T10:05:47.0111013Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0111102Z               "line": 81
2026-06-23T10:05:47.0111189Z             }
2026-06-23T10:05:47.0111280Z           ]
2026-06-23T10:05:47.0111465Z         },
2026-06-23T10:05:47.0111562Z         "impl": {
2026-06-23T10:05:47.0111646Z           "complete": true,
2026-06-23T10:05:47.0111732Z           "evidence": [
2026-06-23T10:05:47.0111804Z             {
2026-06-23T10:05:47.0111924Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0112018Z               "line": 92
2026-06-23T10:05:47.0112105Z             },
2026-06-23T10:05:47.0112191Z             {
2026-06-23T10:05:47.0112313Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T10:05:47.0112408Z               "line": 101
2026-06-23T10:05:47.0112494Z             },
2026-06-23T10:05:47.0112579Z             {
2026-06-23T10:05:47.0112701Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T10:05:47.0112783Z               "line": 132
2026-06-23T10:05:47.0112869Z             },
2026-06-23T10:05:47.0112955Z             {
2026-06-23T10:05:47.0113078Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0113170Z               "line": 577
2026-06-23T10:05:47.0113241Z             },
2026-06-23T10:05:47.0113326Z             {
2026-06-23T10:05:47.0113441Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0113541Z               "line": 633
2026-06-23T10:05:47.0113622Z             },
2026-06-23T10:05:47.0113703Z             {
2026-06-23T10:05:47.0113804Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0113903Z               "line": 6292
2026-06-23T10:05:47.0113989Z             },
2026-06-23T10:05:47.0114071Z             {
2026-06-23T10:05:47.0114180Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0114265Z               "line": 6340
2026-06-23T10:05:47.0114356Z             }
2026-06-23T10:05:47.0114443Z           ]
2026-06-23T10:05:47.0114518Z         },
2026-06-23T10:05:47.0114604Z         "int": {
2026-06-23T10:05:47.0114691Z           "complete": false,
2026-06-23T10:05:47.0114786Z           "evidence": []
2026-06-23T10:05:47.0114870Z         },
2026-06-23T10:05:47.0114957Z         "unit": {
2026-06-23T10:05:47.0115054Z           "complete": true,
2026-06-23T10:05:47.0115129Z           "evidence": [
2026-06-23T10:05:47.0115218Z             {
2026-06-23T10:05:47.0115333Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T10:05:47.0115424Z               "line": 371
2026-06-23T10:05:47.0115504Z             },
2026-06-23T10:05:47.0115599Z             {
2026-06-23T10:05:47.0115715Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T10:05:47.0115796Z               "line": 429
2026-06-23T10:05:47.0115885Z             },
2026-06-23T10:05:47.0115972Z             {
2026-06-23T10:05:47.0116086Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0116172Z               "line": 1082
2026-06-23T10:05:47.0116262Z             },
2026-06-23T10:05:47.0116349Z             {
2026-06-23T10:05:47.0116458Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0116543Z               "line": 10241
2026-06-23T10:05:47.0116630Z             }
2026-06-23T10:05:47.0116716Z           ]
2026-06-23T10:05:47.0116787Z         }
2026-06-23T10:05:47.0116878Z       }
2026-06-23T10:05:47.0116965Z     },
2026-06-23T10:05:47.0117050Z     {
2026-06-23T10:05:47.0117149Z       "id": "REQ-MANIFEST-4",
2026-06-23T10:05:47.0117841Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-23T10:05:47.0118039Z       "requiredStages": [
2026-06-23T10:05:47.0118119Z         "doc",
2026-06-23T10:05:47.0118200Z         "impl",
2026-06-23T10:05:47.0118286Z         "unit"
2026-06-23T10:05:47.0118372Z       ],
2026-06-23T10:05:47.0118462Z       "stages": {
2026-06-23T10:05:47.0118543Z         "doc": {
2026-06-23T10:05:47.0118639Z           "complete": true,
2026-06-23T10:05:47.0118724Z           "evidence": [
2026-06-23T10:05:47.0118809Z             {
2026-06-23T10:05:47.0119063Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0119144Z               "line": 88
2026-06-23T10:05:47.0119226Z             }
2026-06-23T10:05:47.0119311Z           ]
2026-06-23T10:05:47.0119401Z         },
2026-06-23T10:05:47.0119483Z         "impl": {
2026-06-23T10:05:47.0119574Z           "complete": true,
2026-06-23T10:05:47.0119668Z           "evidence": [
2026-06-23T10:05:47.0119754Z             {
2026-06-23T10:05:47.0119879Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0119964Z               "line": 100
2026-06-23T10:05:47.0120045Z             },
2026-06-23T10:05:47.0120132Z             {
2026-06-23T10:05:47.0120251Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0120345Z               "line": 183
2026-06-23T10:05:47.0120420Z             },
2026-06-23T10:05:47.0120511Z             {
2026-06-23T10:05:47.0120619Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:47.0120718Z               "line": 83
2026-06-23T10:05:47.0120805Z             },
2026-06-23T10:05:47.0120891Z             {
2026-06-23T10:05:47.0121019Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.0121100Z               "line": 629
2026-06-23T10:05:47.0121187Z             },
2026-06-23T10:05:47.0121263Z             {
2026-06-23T10:05:47.0121386Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.0121482Z               "line": 654
2026-06-23T10:05:47.0121563Z             }
2026-06-23T10:05:47.0121653Z           ]
2026-06-23T10:05:47.0121725Z         },
2026-06-23T10:05:47.0121816Z         "int": {
2026-06-23T10:05:47.0121901Z           "complete": false,
2026-06-23T10:05:47.0121987Z           "evidence": []
2026-06-23T10:05:47.0122074Z         },
2026-06-23T10:05:47.0122160Z         "unit": {
2026-06-23T10:05:47.0122244Z           "complete": true,
2026-06-23T10:05:47.0122335Z           "evidence": [
2026-06-23T10:05:47.0122417Z             {
2026-06-23T10:05:47.0122545Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0122635Z               "line": 1492
2026-06-23T10:05:47.0122723Z             },
2026-06-23T10:05:47.0122808Z             {
2026-06-23T10:05:47.0122930Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0123011Z               "line": 1525
2026-06-23T10:05:47.0123092Z             },
2026-06-23T10:05:47.0123186Z             {
2026-06-23T10:05:47.0123314Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.0123395Z               "line": 988
2026-06-23T10:05:47.0123478Z             }
2026-06-23T10:05:47.0123557Z           ]
2026-06-23T10:05:47.0123633Z         }
2026-06-23T10:05:47.0123720Z       }
2026-06-23T10:05:47.0123806Z     },
2026-06-23T10:05:47.0123895Z     {
2026-06-23T10:05:47.0123997Z       "id": "REQ-MANIFEST-5",
2026-06-23T10:05:47.0126803Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-23T10:05:47.0127013Z       "requiredStages": [
2026-06-23T10:05:47.0127099Z         "doc",
2026-06-23T10:05:47.0127181Z         "impl",
2026-06-23T10:05:47.0127366Z         "unit"
2026-06-23T10:05:47.0127452Z       ],
2026-06-23T10:05:47.0127539Z       "stages": {
2026-06-23T10:05:47.0127633Z         "doc": {
2026-06-23T10:05:47.0127714Z           "complete": true,
2026-06-23T10:05:47.0127810Z           "evidence": [
2026-06-23T10:05:47.0127892Z             {
2026-06-23T10:05:47.0127990Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0128075Z               "line": 83
2026-06-23T10:05:47.0128161Z             }
2026-06-23T10:05:47.0128246Z           ]
2026-06-23T10:05:47.0128331Z         },
2026-06-23T10:05:47.0128416Z         "impl": {
2026-06-23T10:05:47.0128503Z           "complete": true,
2026-06-23T10:05:47.0128589Z           "evidence": [
2026-06-23T10:05:47.0128674Z             {
2026-06-23T10:05:47.0128798Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T10:05:47.0128880Z               "line": 120
2026-06-23T10:05:47.0129032Z             }
2026-06-23T10:05:47.0129118Z           ]
2026-06-23T10:05:47.0129213Z         },
2026-06-23T10:05:47.0129289Z         "int": {
2026-06-23T10:05:47.0129379Z           "complete": false,
2026-06-23T10:05:47.0129472Z           "evidence": []
2026-06-23T10:05:47.0129557Z         },
2026-06-23T10:05:47.0129646Z         "unit": {
2026-06-23T10:05:47.0129733Z           "complete": true,
2026-06-23T10:05:47.0129819Z           "evidence": [
2026-06-23T10:05:47.0129909Z             {
2026-06-23T10:05:47.0130028Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T10:05:47.0130115Z               "line": 404
2026-06-23T10:05:47.0130200Z             },
2026-06-23T10:05:47.0130281Z             {
2026-06-23T10:05:47.0130397Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0130486Z               "line": 1155
2026-06-23T10:05:47.0130576Z             },
2026-06-23T10:05:47.0130663Z             {
2026-06-23T10:05:47.0130783Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0130877Z               "line": 1184
2026-06-23T10:05:47.0130956Z             },
2026-06-23T10:05:47.0131043Z             {
2026-06-23T10:05:47.0131160Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0131255Z               "line": 1224
2026-06-23T10:05:47.0131331Z             },
2026-06-23T10:05:47.0131413Z             {
2026-06-23T10:05:47.0131541Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0131632Z               "line": 1239
2026-06-23T10:05:47.0131718Z             }
2026-06-23T10:05:47.0131799Z           ]
2026-06-23T10:05:47.0131880Z         }
2026-06-23T10:05:47.0131961Z       }
2026-06-23T10:05:47.0132042Z     },
2026-06-23T10:05:47.0132133Z     {
2026-06-23T10:05:47.0132232Z       "id": "REQ-MANIFEST-6",
2026-06-23T10:05:47.0134295Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-23T10:05:47.0134513Z       "requiredStages": [
2026-06-23T10:05:47.0134605Z         "doc",
2026-06-23T10:05:47.0134685Z         "unit"
2026-06-23T10:05:47.0134770Z       ],
2026-06-23T10:05:47.0134852Z       "stages": {
2026-06-23T10:05:47.0134938Z         "doc": {
2026-06-23T10:05:47.0135018Z           "complete": true,
2026-06-23T10:05:47.0135104Z           "evidence": [
2026-06-23T10:05:47.0135181Z             {
2026-06-23T10:05:47.0135272Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0135367Z               "line": 150
2026-06-23T10:05:47.0135554Z             }
2026-06-23T10:05:47.0135643Z           ]
2026-06-23T10:05:47.0135729Z         },
2026-06-23T10:05:47.0135821Z         "impl": {
2026-06-23T10:05:47.0135902Z           "complete": false,
2026-06-23T10:05:47.0135991Z           "evidence": []
2026-06-23T10:05:47.0136077Z         },
2026-06-23T10:05:47.0136169Z         "int": {
2026-06-23T10:05:47.0136264Z           "complete": false,
2026-06-23T10:05:47.0136357Z           "evidence": []
2026-06-23T10:05:47.0136448Z         },
2026-06-23T10:05:47.0136535Z         "unit": {
2026-06-23T10:05:47.0136630Z           "complete": true,
2026-06-23T10:05:47.0136724Z           "evidence": [
2026-06-23T10:05:47.0136811Z             {
2026-06-23T10:05:47.0136940Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.0137020Z               "line": 1261
2026-06-23T10:05:47.0137102Z             }
2026-06-23T10:05:47.0137188Z           ]
2026-06-23T10:05:47.0137274Z         }
2026-06-23T10:05:47.0137358Z       }
2026-06-23T10:05:47.0137445Z     },
2026-06-23T10:05:47.0137531Z     {
2026-06-23T10:05:47.0137626Z       "id": "REQ-MANIFEST-7",
2026-06-23T10:05:47.0140623Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-23T10:05:47.0140741Z       "requiredStages": [
2026-06-23T10:05:47.0140827Z         "doc",
2026-06-23T10:05:47.0140903Z         "impl",
2026-06-23T10:05:47.0140986Z         "unit"
2026-06-23T10:05:47.0141070Z       ],
2026-06-23T10:05:47.0141156Z       "stages": {
2026-06-23T10:05:47.0141248Z         "doc": {
2026-06-23T10:05:47.0141347Z           "complete": true,
2026-06-23T10:05:47.0141441Z           "evidence": [
2026-06-23T10:05:47.0141521Z             {
2026-06-23T10:05:47.0141627Z               "path": "docs/MANIFEST.md",
2026-06-23T10:05:47.0141716Z               "line": 43
2026-06-23T10:05:47.0141801Z             }
2026-06-23T10:05:47.0141877Z           ]
2026-06-23T10:05:47.0141959Z         },
2026-06-23T10:05:47.0142049Z         "impl": {
2026-06-23T10:05:47.0142139Z           "complete": true,
2026-06-23T10:05:47.0142225Z           "evidence": [
2026-06-23T10:05:47.0142317Z             {
2026-06-23T10:05:47.0142444Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T10:05:47.0142536Z               "line": 54
2026-06-23T10:05:47.0142622Z             }
2026-06-23T10:05:47.0142707Z           ]
2026-06-23T10:05:47.0142793Z         },
2026-06-23T10:05:47.0142879Z         "int": {
2026-06-23T10:05:47.0142965Z           "complete": false,
2026-06-23T10:05:47.0143060Z           "evidence": []
2026-06-23T10:05:47.0143246Z         },
2026-06-23T10:05:47.0143336Z         "unit": {
2026-06-23T10:05:47.0143432Z           "complete": true,
2026-06-23T10:05:47.0143514Z           "evidence": [
2026-06-23T10:05:47.0143599Z             {
2026-06-23T10:05:47.0143723Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0143809Z               "line": 1685
2026-06-23T10:05:47.0143895Z             }
2026-06-23T10:05:47.0143980Z           ]
2026-06-23T10:05:47.0144060Z         }
2026-06-23T10:05:47.0144136Z       }
2026-06-23T10:05:47.0144217Z     },
2026-06-23T10:05:47.0144420Z     {
2026-06-23T10:05:47.0146951Z       "id": "REQ-MANIFEST-8",
2026-06-23T10:05:47.0149277Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-23T10:05:47.0149404Z       "requiredStages": [
2026-06-23T10:05:47.0149499Z         "doc",
2026-06-23T10:05:47.0149585Z         "impl",
2026-06-23T10:05:47.0149671Z         "unit",
2026-06-23T10:05:47.0149756Z         "int"
2026-06-23T10:05:47.0149847Z       ],
2026-06-23T10:05:47.0149933Z       "stages": {
2026-06-23T10:05:47.0150014Z         "doc": {
2026-06-23T10:05:47.0150118Z           "complete": true,
2026-06-23T10:05:47.0150204Z           "evidence": [
2026-06-23T10:05:47.0150291Z             {
2026-06-23T10:05:47.0150391Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0150476Z               "line": 193
2026-06-23T10:05:47.0150563Z             },
2026-06-23T10:05:47.0150648Z             {
2026-06-23T10:05:47.0150752Z               "path": "docs/MANIFEST.md",
2026-06-23T10:05:47.0150833Z               "line": 54
2026-06-23T10:05:47.0150921Z             }
2026-06-23T10:05:47.0151005Z           ]
2026-06-23T10:05:47.0151091Z         },
2026-06-23T10:05:47.0151178Z         "impl": {
2026-06-23T10:05:47.0151269Z           "complete": true,
2026-06-23T10:05:47.0151353Z           "evidence": [
2026-06-23T10:05:47.0151425Z             {
2026-06-23T10:05:47.0151555Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T10:05:47.0151653Z               "line": 222
2026-06-23T10:05:47.0151740Z             },
2026-06-23T10:05:47.0151822Z             {
2026-06-23T10:05:47.0151936Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T10:05:47.0152025Z               "line": 306
2026-06-23T10:05:47.0152105Z             }
2026-06-23T10:05:47.0152182Z           ]
2026-06-23T10:05:47.0152272Z         },
2026-06-23T10:05:47.0152356Z         "int": {
2026-06-23T10:05:47.0152452Z           "complete": true,
2026-06-23T10:05:47.0152538Z           "evidence": [
2026-06-23T10:05:47.0152628Z             {
2026-06-23T10:05:47.0152752Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-23T10:05:47.0152844Z               "line": 18
2026-06-23T10:05:47.0152929Z             }
2026-06-23T10:05:47.0153014Z           ]
2026-06-23T10:05:47.0153101Z         },
2026-06-23T10:05:47.0153186Z         "unit": {
2026-06-23T10:05:47.0153277Z           "complete": true,
2026-06-23T10:05:47.0153367Z           "evidence": [
2026-06-23T10:05:47.0153449Z             {
2026-06-23T10:05:47.0153577Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0153663Z               "line": 1703
2026-06-23T10:05:47.0153749Z             },
2026-06-23T10:05:47.0153835Z             {
2026-06-23T10:05:47.0153958Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T10:05:47.0154192Z               "line": 316
2026-06-23T10:05:47.0154268Z             },
2026-06-23T10:05:47.0154360Z             {
2026-06-23T10:05:47.0154469Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T10:05:47.0154564Z               "line": 332
2026-06-23T10:05:47.0154643Z             },
2026-06-23T10:05:47.0154730Z             {
2026-06-23T10:05:47.0154852Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T10:05:47.0154942Z               "line": 345
2026-06-23T10:05:47.0155023Z             },
2026-06-23T10:05:47.0155105Z             {
2026-06-23T10:05:47.0155219Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T10:05:47.0155405Z               "line": 422
2026-06-23T10:05:47.0155491Z             },
2026-06-23T10:05:47.0155571Z             {
2026-06-23T10:05:47.0155677Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T10:05:47.0155777Z               "line": 436
2026-06-23T10:05:47.0155862Z             }
2026-06-23T10:05:47.0155943Z           ]
2026-06-23T10:05:47.0156035Z         }
2026-06-23T10:05:47.0156120Z       }
2026-06-23T10:05:47.0156210Z     },
2026-06-23T10:05:47.0156292Z     {
2026-06-23T10:05:47.0156392Z       "id": "REQ-MESH-1",
2026-06-23T10:05:47.0158446Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-23T10:05:47.0158561Z       "requiredStages": [
2026-06-23T10:05:47.0158661Z         "impl",
2026-06-23T10:05:47.0158742Z         "unit",
2026-06-23T10:05:47.0158822Z         "int"
2026-06-23T10:05:47.0158904Z       ],
2026-06-23T10:05:47.0159080Z       "stages": {
2026-06-23T10:05:47.0159161Z         "doc": {
2026-06-23T10:05:47.0159253Z           "complete": false,
2026-06-23T10:05:47.0159347Z           "evidence": []
2026-06-23T10:05:47.0159423Z         },
2026-06-23T10:05:47.0159510Z         "impl": {
2026-06-23T10:05:47.0159605Z           "complete": true,
2026-06-23T10:05:47.0159685Z           "evidence": [
2026-06-23T10:05:47.0159770Z             {
2026-06-23T10:05:47.0159889Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:47.0159988Z               "line": 922
2026-06-23T10:05:47.0160073Z             },
2026-06-23T10:05:47.0160155Z             {
2026-06-23T10:05:47.0160280Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0160363Z               "line": 38
2026-06-23T10:05:47.0160445Z             },
2026-06-23T10:05:47.0160532Z             {
2026-06-23T10:05:47.0160660Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0160740Z               "line": 161
2026-06-23T10:05:47.0160823Z             },
2026-06-23T10:05:47.0160908Z             {
2026-06-23T10:05:47.0161026Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0161114Z               "line": 206
2026-06-23T10:05:47.0161194Z             },
2026-06-23T10:05:47.0161280Z             {
2026-06-23T10:05:47.0161389Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0161481Z               "line": 57
2026-06-23T10:05:47.0161570Z             },
2026-06-23T10:05:47.0161656Z             {
2026-06-23T10:05:47.0161786Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T10:05:47.0161871Z               "line": 24
2026-06-23T10:05:47.0161957Z             },
2026-06-23T10:05:47.0162043Z             {
2026-06-23T10:05:47.0162177Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T10:05:47.0162373Z               "line": 142
2026-06-23T10:05:47.0162459Z             },
2026-06-23T10:05:47.0162547Z             {
2026-06-23T10:05:47.0162675Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T10:05:47.0162771Z               "line": 162
2026-06-23T10:05:47.0162841Z             }
2026-06-23T10:05:47.0162921Z           ]
2026-06-23T10:05:47.0163007Z         },
2026-06-23T10:05:47.0163094Z         "int": {
2026-06-23T10:05:47.0163198Z           "complete": true,
2026-06-23T10:05:47.0163283Z           "evidence": [
2026-06-23T10:05:47.0163455Z             {
2026-06-23T10:05:47.0163584Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-23T10:05:47.0163670Z               "line": 67
2026-06-23T10:05:47.0163756Z             },
2026-06-23T10:05:47.0163842Z             {
2026-06-23T10:05:47.0163966Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-23T10:05:47.0164057Z               "line": 93
2026-06-23T10:05:47.0164152Z             },
2026-06-23T10:05:47.0164232Z             {
2026-06-23T10:05:47.0164353Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-23T10:05:47.0164442Z               "line": 117
2026-06-23T10:05:47.0164528Z             },
2026-06-23T10:05:47.0164610Z             {
2026-06-23T10:05:47.0164733Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-23T10:05:47.0164819Z               "line": 134
2026-06-23T10:05:47.0164900Z             }
2026-06-23T10:05:47.0164973Z           ]
2026-06-23T10:05:47.0165072Z         },
2026-06-23T10:05:47.0165157Z         "unit": {
2026-06-23T10:05:47.0165257Z           "complete": true,
2026-06-23T10:05:47.0165338Z           "evidence": [
2026-06-23T10:05:47.0165417Z             {
2026-06-23T10:05:47.0165544Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0165631Z               "line": 427
2026-06-23T10:05:47.0165718Z             },
2026-06-23T10:05:47.0165802Z             {
2026-06-23T10:05:47.0165942Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T10:05:47.0166032Z               "line": 376
2026-06-23T10:05:47.0166127Z             },
2026-06-23T10:05:47.0166213Z             {
2026-06-23T10:05:47.0166337Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T10:05:47.0166427Z               "line": 412
2026-06-23T10:05:47.0166513Z             },
2026-06-23T10:05:47.0166595Z             {
2026-06-23T10:05:47.0166718Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T10:05:47.0166804Z               "line": 427
2026-06-23T10:05:47.0166891Z             },
2026-06-23T10:05:47.0166976Z             {
2026-06-23T10:05:47.0167104Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T10:05:47.0167196Z               "line": 438
2026-06-23T10:05:47.0167276Z             },
2026-06-23T10:05:47.0167357Z             {
2026-06-23T10:05:47.0167492Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T10:05:47.0167587Z               "line": 449
2026-06-23T10:05:47.0167671Z             },
2026-06-23T10:05:47.0167748Z             {
2026-06-23T10:05:47.0167864Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T10:05:47.0167948Z               "line": 460
2026-06-23T10:05:47.0168033Z             },
2026-06-23T10:05:47.0168114Z             {
2026-06-23T10:05:47.0168239Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T10:05:47.0168324Z               "line": 496
2026-06-23T10:05:47.0168409Z             },
2026-06-23T10:05:47.0168496Z             {
2026-06-23T10:05:47.0168625Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T10:05:47.0168710Z               "line": 519
2026-06-23T10:05:47.0168792Z             },
2026-06-23T10:05:47.0168873Z             {
2026-06-23T10:05:47.0169073Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T10:05:47.0169159Z               "line": 546
2026-06-23T10:05:47.0169349Z             }
2026-06-23T10:05:47.0169436Z           ]
2026-06-23T10:05:47.0169522Z         }
2026-06-23T10:05:47.0169607Z       }
2026-06-23T10:05:47.0169687Z     },
2026-06-23T10:05:47.0169770Z     {
2026-06-23T10:05:47.0169869Z       "id": "REQ-MESH-2",
2026-06-23T10:05:47.0172394Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-23T10:05:47.0172603Z       "requiredStages": [
2026-06-23T10:05:47.0172694Z         "impl",
2026-06-23T10:05:47.0172779Z         "unit",
2026-06-23T10:05:47.0172860Z         "int"
2026-06-23T10:05:47.0172952Z       ],
2026-06-23T10:05:47.0173038Z       "stages": {
2026-06-23T10:05:47.0173122Z         "doc": {
2026-06-23T10:05:47.0173212Z           "complete": false,
2026-06-23T10:05:47.0173307Z           "evidence": []
2026-06-23T10:05:47.0173387Z         },
2026-06-23T10:05:47.0173472Z         "impl": {
2026-06-23T10:05:47.0173557Z           "complete": true,
2026-06-23T10:05:47.0173644Z           "evidence": [
2026-06-23T10:05:47.0173726Z             {
2026-06-23T10:05:47.0173843Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:47.0173940Z               "line": 757
2026-06-23T10:05:47.0174025Z             },
2026-06-23T10:05:47.0174110Z             {
2026-06-23T10:05:47.0174235Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:47.0174321Z               "line": 118
2026-06-23T10:05:47.0174407Z             },
2026-06-23T10:05:47.0174497Z             {
2026-06-23T10:05:47.0174622Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:47.0174712Z               "line": 347
2026-06-23T10:05:47.0174797Z             },
2026-06-23T10:05:47.0174889Z             {
2026-06-23T10:05:47.0174988Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:47.0175093Z               "line": 389
2026-06-23T10:05:47.0175180Z             },
2026-06-23T10:05:47.0175266Z             {
2026-06-23T10:05:47.0175384Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:47.0175456Z               "line": 403
2026-06-23T10:05:47.0175538Z             },
2026-06-23T10:05:47.0175618Z             {
2026-06-23T10:05:47.0175736Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:47.0175831Z               "line": 492
2026-06-23T10:05:47.0175912Z             },
2026-06-23T10:05:47.0176000Z             {
2026-06-23T10:05:47.0176109Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:47.0176206Z               "line": 507
2026-06-23T10:05:47.0176287Z             },
2026-06-23T10:05:47.0176382Z             {
2026-06-23T10:05:47.0176497Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:47.0176592Z               "line": 534
2026-06-23T10:05:47.0176677Z             },
2026-06-23T10:05:47.0176763Z             {
2026-06-23T10:05:47.0176878Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0176964Z               "line": 207
2026-06-23T10:05:47.0177049Z             },
2026-06-23T10:05:47.0177131Z             {
2026-06-23T10:05:47.0177245Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0177330Z               "line": 755
2026-06-23T10:05:47.0177475Z             },
2026-06-23T10:05:47.0177559Z             {
2026-06-23T10:05:47.0177674Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0177761Z               "line": 816
2026-06-23T10:05:47.0177846Z             },
2026-06-23T10:05:47.0177932Z             {
2026-06-23T10:05:47.0178057Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0178138Z               "line": 869
2026-06-23T10:05:47.0178222Z             },
2026-06-23T10:05:47.0178304Z             {
2026-06-23T10:05:47.0178424Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0178622Z               "line": 891
2026-06-23T10:05:47.0178703Z             },
2026-06-23T10:05:47.0178790Z             {
2026-06-23T10:05:47.0178899Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:47.0179071Z               "line": 122
2026-06-23T10:05:47.0179142Z             },
2026-06-23T10:05:47.0179227Z             {
2026-06-23T10:05:47.0179357Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T10:05:47.0179442Z               "line": 44
2026-06-23T10:05:47.0179528Z             },
2026-06-23T10:05:47.0179613Z             {
2026-06-23T10:05:47.0179729Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T10:05:47.0179805Z               "line": 184
2026-06-23T10:05:47.0179890Z             },
2026-06-23T10:05:47.0179972Z             {
2026-06-23T10:05:47.0180082Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T10:05:47.0180162Z               "line": 211
2026-06-23T10:05:47.0180248Z             },
2026-06-23T10:05:47.0180335Z             {
2026-06-23T10:05:47.0180434Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T10:05:47.0180529Z               "line": 251
2026-06-23T10:05:47.0180616Z             },
2026-06-23T10:05:47.0180697Z             {
2026-06-23T10:05:47.0180820Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T10:05:47.0180909Z               "line": 275
2026-06-23T10:05:47.0180996Z             },
2026-06-23T10:05:47.0181080Z             {
2026-06-23T10:05:47.0181193Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T10:05:47.0181275Z               "line": 289
2026-06-23T10:05:47.0181357Z             },
2026-06-23T10:05:47.0181442Z             {
2026-06-23T10:05:47.0181546Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T10:05:47.0181647Z               "line": 300
2026-06-23T10:05:47.0181728Z             },
2026-06-23T10:05:47.0181808Z             {
2026-06-23T10:05:47.0181929Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T10:05:47.0182014Z               "line": 313
2026-06-23T10:05:47.0182104Z             }
2026-06-23T10:05:47.0182190Z           ]
2026-06-23T10:05:47.0182281Z         },
2026-06-23T10:05:47.0182367Z         "int": {
2026-06-23T10:05:47.0182457Z           "complete": true,
2026-06-23T10:05:47.0182548Z           "evidence": [
2026-06-23T10:05:47.0182634Z             {
2026-06-23T10:05:47.0182772Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-23T10:05:47.0182858Z               "line": 116
2026-06-23T10:05:47.0182944Z             },
2026-06-23T10:05:47.0183029Z             {
2026-06-23T10:05:47.0183159Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-23T10:05:47.0183249Z               "line": 181
2026-06-23T10:05:47.0183329Z             }
2026-06-23T10:05:47.0183416Z           ]
2026-06-23T10:05:47.0183497Z         },
2026-06-23T10:05:47.0183588Z         "unit": {
2026-06-23T10:05:47.0183668Z           "complete": true,
2026-06-23T10:05:47.0183767Z           "evidence": [
2026-06-23T10:05:47.0183858Z             {
2026-06-23T10:05:47.0183975Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0184070Z               "line": 999
2026-06-23T10:05:47.0184151Z             },
2026-06-23T10:05:47.0184233Z             {
2026-06-23T10:05:47.0184351Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0184548Z               "line": 1016
2026-06-23T10:05:47.0184633Z             },
2026-06-23T10:05:47.0184718Z             {
2026-06-23T10:05:47.0184853Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0184944Z               "line": 1024
2026-06-23T10:05:47.0185023Z             },
2026-06-23T10:05:47.0185100Z             {
2026-06-23T10:05:47.0185224Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0185310Z               "line": 1048
2026-06-23T10:05:47.0185400Z             },
2026-06-23T10:05:47.0185487Z             {
2026-06-23T10:05:47.0185615Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T10:05:47.0185812Z               "line": 1499
2026-06-23T10:05:47.0185901Z             },
2026-06-23T10:05:47.0185987Z             {
2026-06-23T10:05:47.0186103Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T10:05:47.0186183Z               "line": 347
2026-06-23T10:05:47.0186267Z             },
2026-06-23T10:05:47.0186352Z             {
2026-06-23T10:05:47.0186472Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T10:05:47.0186565Z               "line": 370
2026-06-23T10:05:47.0186651Z             },
2026-06-23T10:05:47.0186737Z             {
2026-06-23T10:05:47.0186839Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T10:05:47.0186932Z               "line": 407
2026-06-23T10:05:47.0187009Z             },
2026-06-23T10:05:47.0187091Z             {
2026-06-23T10:05:47.0187204Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T10:05:47.0187290Z               "line": 431
2026-06-23T10:05:47.0187391Z             },
2026-06-23T10:05:47.0187471Z             {
2026-06-23T10:05:47.0187585Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T10:05:47.0187672Z               "line": 483
2026-06-23T10:05:47.0187753Z             },
2026-06-23T10:05:47.0187844Z             {
2026-06-23T10:05:47.0187948Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T10:05:47.0188045Z               "line": 499
2026-06-23T10:05:47.0188124Z             },
2026-06-23T10:05:47.0188210Z             {
2026-06-23T10:05:47.0188321Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T10:05:47.0188416Z               "line": 514
2026-06-23T10:05:47.0188501Z             },
2026-06-23T10:05:47.0188573Z             {
2026-06-23T10:05:47.0188689Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T10:05:47.0188768Z               "line": 531
2026-06-23T10:05:47.0188849Z             }
2026-06-23T10:05:47.0188932Z           ]
2026-06-23T10:05:47.0189101Z         }
2026-06-23T10:05:47.0189187Z       }
2026-06-23T10:05:47.0189268Z     },
2026-06-23T10:05:47.0189350Z     {
2026-06-23T10:05:47.0189435Z       "id": "REQ-MESH-3",
2026-06-23T10:05:47.0191065Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-23T10:05:47.0191166Z       "requiredStages": [
2026-06-23T10:05:47.0191239Z         "impl",
2026-06-23T10:05:47.0191327Z         "unit",
2026-06-23T10:05:47.0191412Z         "int"
2026-06-23T10:05:47.0191493Z       ],
2026-06-23T10:05:47.0191593Z       "stages": {
2026-06-23T10:05:47.0191673Z         "doc": {
2026-06-23T10:05:47.0191762Z           "complete": false,
2026-06-23T10:05:47.0191854Z           "evidence": []
2026-06-23T10:05:47.0191945Z         },
2026-06-23T10:05:47.0192026Z         "impl": {
2026-06-23T10:05:47.0192126Z           "complete": true,
2026-06-23T10:05:47.0192212Z           "evidence": [
2026-06-23T10:05:47.0192397Z             {
2026-06-23T10:05:47.0192527Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:47.0192607Z               "line": 641
2026-06-23T10:05:47.0192693Z             }
2026-06-23T10:05:47.0192765Z           ]
2026-06-23T10:05:47.0192841Z         },
2026-06-23T10:05:47.0192932Z         "int": {
2026-06-23T10:05:47.0193027Z           "complete": true,
2026-06-23T10:05:47.0193118Z           "evidence": [
2026-06-23T10:05:47.0193203Z             {
2026-06-23T10:05:47.0193327Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-23T10:05:47.0193413Z               "line": 373
2026-06-23T10:05:47.0193599Z             },
2026-06-23T10:05:47.0193684Z             {
2026-06-23T10:05:47.0193805Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-23T10:05:47.0193885Z               "line": 436
2026-06-23T10:05:47.0193971Z             }
2026-06-23T10:05:47.0194048Z           ]
2026-06-23T10:05:47.0194129Z         },
2026-06-23T10:05:47.0194223Z         "unit": {
2026-06-23T10:05:47.0194327Z           "complete": true,
2026-06-23T10:05:47.0194409Z           "evidence": [
2026-06-23T10:05:47.0194498Z             {
2026-06-23T10:05:47.0194615Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:47.0194702Z               "line": 910
2026-06-23T10:05:47.0194789Z             }
2026-06-23T10:05:47.0194874Z           ]
2026-06-23T10:05:47.0194968Z         }
2026-06-23T10:05:47.0195051Z       }
2026-06-23T10:05:47.0195132Z     },
2026-06-23T10:05:47.0195212Z     {
2026-06-23T10:05:47.0195302Z       "id": "REQ-MESH-4",
2026-06-23T10:05:47.0197436Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-23T10:05:47.0197550Z       "requiredStages": [
2026-06-23T10:05:47.0197632Z         "impl",
2026-06-23T10:05:47.0197712Z         "unit",
2026-06-23T10:05:47.0197802Z         "int"
2026-06-23T10:05:47.0197888Z       ],
2026-06-23T10:05:47.0197975Z       "stages": {
2026-06-23T10:05:47.0198075Z         "doc": {
2026-06-23T10:05:47.0198150Z           "complete": false,
2026-06-23T10:05:47.0198242Z           "evidence": []
2026-06-23T10:05:47.0198328Z         },
2026-06-23T10:05:47.0198409Z         "impl": {
2026-06-23T10:05:47.0198504Z           "complete": true,
2026-06-23T10:05:47.0198590Z           "evidence": [
2026-06-23T10:05:47.0198675Z             {
2026-06-23T10:05:47.0198809Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-23T10:05:47.0198891Z               "line": 33
2026-06-23T10:05:47.0199047Z             },
2026-06-23T10:05:47.0199138Z             {
2026-06-23T10:05:47.0199272Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0199351Z               "line": 68
2026-06-23T10:05:47.0199433Z             },
2026-06-23T10:05:47.0199520Z             {
2026-06-23T10:05:47.0199638Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0199728Z               "line": 111
2026-06-23T10:05:47.0199823Z             },
2026-06-23T10:05:47.0199905Z             {
2026-06-23T10:05:47.0200028Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0200109Z               "line": 462
2026-06-23T10:05:47.0200191Z             },
2026-06-23T10:05:47.0200267Z             {
2026-06-23T10:05:47.0200386Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0200582Z               "line": 711
2026-06-23T10:05:47.0200676Z             },
2026-06-23T10:05:47.0200753Z             {
2026-06-23T10:05:47.0200873Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0200954Z               "line": 725
2026-06-23T10:05:47.0201034Z             },
2026-06-23T10:05:47.0201116Z             {
2026-06-23T10:05:47.0201230Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:47.0201311Z               "line": 132
2026-06-23T10:05:47.0201397Z             },
2026-06-23T10:05:47.0201479Z             {
2026-06-23T10:05:47.0201601Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-23T10:05:47.0201785Z               "line": 26
2026-06-23T10:05:47.0201869Z             },
2026-06-23T10:05:47.0201944Z             {
2026-06-23T10:05:47.0202068Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-23T10:05:47.0202144Z               "line": 97
2026-06-23T10:05:47.0202242Z             },
2026-06-23T10:05:47.0202332Z             {
2026-06-23T10:05:47.0202443Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-23T10:05:47.0202534Z               "line": 119
2026-06-23T10:05:47.0202619Z             },
2026-06-23T10:05:47.0202705Z             {
2026-06-23T10:05:47.0202815Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:47.0202905Z               "line": 82
2026-06-23T10:05:47.0202990Z             },
2026-06-23T10:05:47.0203078Z             {
2026-06-23T10:05:47.0203186Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:47.0203277Z               "line": 111
2026-06-23T10:05:47.0203369Z             },
2026-06-23T10:05:47.0203444Z             {
2026-06-23T10:05:47.0203572Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:47.0203659Z               "line": 232
2026-06-23T10:05:47.0203740Z             },
2026-06-23T10:05:47.0203826Z             {
2026-06-23T10:05:47.0203930Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:47.0204027Z               "line": 245
2026-06-23T10:05:47.0204111Z             },
2026-06-23T10:05:47.0204197Z             {
2026-06-23T10:05:47.0204303Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0204403Z               "line": 5320
2026-06-23T10:05:47.0204488Z             }
2026-06-23T10:05:47.0204569Z           ]
2026-06-23T10:05:47.0204657Z         },
2026-06-23T10:05:47.0204741Z         "int": {
2026-06-23T10:05:47.0204826Z           "complete": true,
2026-06-23T10:05:47.0204916Z           "evidence": [
2026-06-23T10:05:47.0205002Z             {
2026-06-23T10:05:47.0205124Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-23T10:05:47.0205214Z               "line": 98
2026-06-23T10:05:47.0205296Z             },
2026-06-23T10:05:47.0205368Z             {
2026-06-23T10:05:47.0205491Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-23T10:05:47.0205581Z               "line": 140
2026-06-23T10:05:47.0205668Z             }
2026-06-23T10:05:47.0205758Z           ]
2026-06-23T10:05:47.0205843Z         },
2026-06-23T10:05:47.0205931Z         "unit": {
2026-06-23T10:05:47.0206016Z           "complete": true,
2026-06-23T10:05:47.0206110Z           "evidence": [
2026-06-23T10:05:47.0206187Z             {
2026-06-23T10:05:47.0206321Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-23T10:05:47.0206416Z               "line": 178
2026-06-23T10:05:47.0206497Z             },
2026-06-23T10:05:47.0206588Z             {
2026-06-23T10:05:47.0206716Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-23T10:05:47.0206816Z               "line": 242
2026-06-23T10:05:47.0206899Z             },
2026-06-23T10:05:47.0206984Z             {
2026-06-23T10:05:47.0207107Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0207199Z               "line": 1079
2026-06-23T10:05:47.0207275Z             },
2026-06-23T10:05:47.0207360Z             {
2026-06-23T10:05:47.0207487Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0207676Z               "line": 1109
2026-06-23T10:05:47.0207761Z             },
2026-06-23T10:05:47.0207848Z             {
2026-06-23T10:05:47.0207963Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T10:05:47.0208047Z               "line": 1129
2026-06-23T10:05:47.0208133Z             },
2026-06-23T10:05:47.0208221Z             {
2026-06-23T10:05:47.0208348Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T10:05:47.0208434Z               "line": 602
2026-06-23T10:05:47.0208516Z             },
2026-06-23T10:05:47.0208696Z             {
2026-06-23T10:05:47.0208816Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-23T10:05:47.0208902Z               "line": 148
2026-06-23T10:05:47.0209064Z             },
2026-06-23T10:05:47.0209146Z             {
2026-06-23T10:05:47.0209259Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-23T10:05:47.0209349Z               "line": 169
2026-06-23T10:05:47.0209437Z             },
2026-06-23T10:05:47.0209522Z             {
2026-06-23T10:05:47.0209627Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-23T10:05:47.0209722Z               "line": 181
2026-06-23T10:05:47.0209804Z             },
2026-06-23T10:05:47.0209884Z             {
2026-06-23T10:05:47.0210003Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-23T10:05:47.0210099Z               "line": 202
2026-06-23T10:05:47.0210203Z             },
2026-06-23T10:05:47.0210288Z             {
2026-06-23T10:05:47.0210407Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:47.0210514Z               "line": 375
2026-06-23T10:05:47.0210593Z             },
2026-06-23T10:05:47.0210678Z             {
2026-06-23T10:05:47.0210785Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:47.0210880Z               "line": 407
2026-06-23T10:05:47.0210950Z             },
2026-06-23T10:05:47.0211042Z             {
2026-06-23T10:05:47.0211151Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0211241Z               "line": 11590
2026-06-23T10:05:47.0211332Z             }
2026-06-23T10:05:47.0211410Z           ]
2026-06-23T10:05:47.0211499Z         }
2026-06-23T10:05:47.0211584Z       }
2026-06-23T10:05:47.0211662Z     },
2026-06-23T10:05:47.0211753Z     {
2026-06-23T10:05:47.0211843Z       "id": "REQ-MESH-5",
2026-06-23T10:05:47.0213217Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-23T10:05:47.0213332Z       "requiredStages": [
2026-06-23T10:05:47.0213418Z         "impl",
2026-06-23T10:05:47.0213513Z         "unit"
2026-06-23T10:05:47.0213594Z       ],
2026-06-23T10:05:47.0213680Z       "stages": {
2026-06-23T10:05:47.0213770Z         "doc": {
2026-06-23T10:05:47.0213865Z           "complete": false,
2026-06-23T10:05:47.0213948Z           "evidence": []
2026-06-23T10:05:47.0214028Z         },
2026-06-23T10:05:47.0214113Z         "impl": {
2026-06-23T10:05:47.0214194Z           "complete": true,
2026-06-23T10:05:47.0214277Z           "evidence": [
2026-06-23T10:05:47.0214371Z             {
2026-06-23T10:05:47.0214495Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T10:05:47.0214587Z               "line": 61
2026-06-23T10:05:47.0214671Z             },
2026-06-23T10:05:47.0214753Z             {
2026-06-23T10:05:47.0214863Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T10:05:47.0214953Z               "line": 109
2026-06-23T10:05:47.0215038Z             },
2026-06-23T10:05:47.0215125Z             {
2026-06-23T10:05:47.0215250Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:47.0215438Z               "line": 104
2026-06-23T10:05:47.0215524Z             },
2026-06-23T10:05:47.0215609Z             {
2026-06-23T10:05:47.0215731Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T10:05:47.0215817Z               "line": 105
2026-06-23T10:05:47.0215909Z             },
2026-06-23T10:05:47.0215998Z             {
2026-06-23T10:05:47.0216127Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0216218Z               "line": 85
2026-06-23T10:05:47.0216299Z             },
2026-06-23T10:05:47.0216380Z             {
2026-06-23T10:05:47.0216600Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0216680Z               "line": 250
2026-06-23T10:05:47.0216767Z             },
2026-06-23T10:05:47.0216853Z             {
2026-06-23T10:05:47.0216976Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0217062Z               "line": 314
2026-06-23T10:05:47.0217158Z             },
2026-06-23T10:05:47.0217243Z             {
2026-06-23T10:05:47.0217371Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0217459Z               "line": 767
2026-06-23T10:05:47.0217548Z             },
2026-06-23T10:05:47.0217634Z             {
2026-06-23T10:05:47.0217740Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T10:05:47.0217821Z               "line": 101
2026-06-23T10:05:47.0217901Z             },
2026-06-23T10:05:47.0217981Z             {
2026-06-23T10:05:47.0218091Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T10:05:47.0218180Z               "line": 193
2026-06-23T10:05:47.0218265Z             }
2026-06-23T10:05:47.0218345Z           ]
2026-06-23T10:05:47.0218427Z         },
2026-06-23T10:05:47.0218504Z         "int": {
2026-06-23T10:05:47.0218603Z           "complete": false,
2026-06-23T10:05:47.0218703Z           "evidence": []
2026-06-23T10:05:47.0218781Z         },
2026-06-23T10:05:47.0218871Z         "unit": {
2026-06-23T10:05:47.0219048Z           "complete": true,
2026-06-23T10:05:47.0219138Z           "evidence": [
2026-06-23T10:05:47.0219214Z             {
2026-06-23T10:05:47.0219348Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0219433Z               "line": 1009
2026-06-23T10:05:47.0219514Z             },
2026-06-23T10:05:47.0219599Z             {
2026-06-23T10:05:47.0219710Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T10:05:47.0219796Z               "line": 462
2026-06-23T10:05:47.0219872Z             }
2026-06-23T10:05:47.0219958Z           ]
2026-06-23T10:05:47.0220039Z         }
2026-06-23T10:05:47.0220120Z       }
2026-06-23T10:05:47.0220201Z     },
2026-06-23T10:05:47.0220282Z     {
2026-06-23T10:05:47.0220378Z       "id": "REQ-MESH-6",
2026-06-23T10:05:47.0221578Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-23T10:05:47.0221679Z       "requiredStages": [
2026-06-23T10:05:47.0224203Z         "impl",
2026-06-23T10:05:47.0224312Z         "unit"
2026-06-23T10:05:47.0224392Z       ],
2026-06-23T10:05:47.0224484Z       "stages": {
2026-06-23T10:05:47.0224569Z         "doc": {
2026-06-23T10:05:47.0224669Z           "complete": false,
2026-06-23T10:05:47.0224764Z           "evidence": []
2026-06-23T10:05:47.0224856Z         },
2026-06-23T10:05:47.0224941Z         "impl": {
2026-06-23T10:05:47.0225036Z           "complete": true,
2026-06-23T10:05:47.0225133Z           "evidence": [
2026-06-23T10:05:47.0225213Z             {
2026-06-23T10:05:47.0225317Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0225394Z               "line": 4836
2026-06-23T10:05:47.0225623Z             }
2026-06-23T10:05:47.0225709Z           ]
2026-06-23T10:05:47.0225801Z         },
2026-06-23T10:05:47.0225884Z         "int": {
2026-06-23T10:05:47.0225975Z           "complete": false,
2026-06-23T10:05:47.0226056Z           "evidence": []
2026-06-23T10:05:47.0226142Z         },
2026-06-23T10:05:47.0226230Z         "unit": {
2026-06-23T10:05:47.0226315Z           "complete": true,
2026-06-23T10:05:47.0226396Z           "evidence": [
2026-06-23T10:05:47.0226478Z             {
2026-06-23T10:05:47.0226587Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0226682Z               "line": 12140
2026-06-23T10:05:47.0226873Z             },
2026-06-23T10:05:47.0226959Z             {
2026-06-23T10:05:47.0227060Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0227145Z               "line": 12167
2026-06-23T10:05:47.0227235Z             },
2026-06-23T10:05:47.0227312Z             {
2026-06-23T10:05:47.0227413Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0227508Z               "line": 12191
2026-06-23T10:05:47.0227593Z             }
2026-06-23T10:05:47.0227675Z           ]
2026-06-23T10:05:47.0227761Z         }
2026-06-23T10:05:47.0227846Z       }
2026-06-23T10:05:47.0227927Z     },
2026-06-23T10:05:47.0228005Z     {
2026-06-23T10:05:47.0228090Z       "id": "REQ-MIGRATE-1",
2026-06-23T10:05:47.0228271Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-23T10:05:47.0228372Z       "requiredStages": [],
2026-06-23T10:05:47.0228456Z       "stages": {
2026-06-23T10:05:47.0228527Z         "doc": {
2026-06-23T10:05:47.0228627Z           "complete": false,
2026-06-23T10:05:47.0228703Z           "evidence": []
2026-06-23T10:05:47.0228773Z         },
2026-06-23T10:05:47.0228858Z         "impl": {
2026-06-23T10:05:47.0229064Z           "complete": false,
2026-06-23T10:05:47.0229206Z           "evidence": []
2026-06-23T10:05:47.0229303Z         },
2026-06-23T10:05:47.0229388Z         "int": {
2026-06-23T10:05:47.0229492Z           "complete": false,
2026-06-23T10:05:47.0229574Z           "evidence": []
2026-06-23T10:05:47.0229655Z         },
2026-06-23T10:05:47.0229736Z         "unit": {
2026-06-23T10:05:47.0229835Z           "complete": false,
2026-06-23T10:05:47.0229908Z           "evidence": []
2026-06-23T10:05:47.0229998Z         }
2026-06-23T10:05:47.0230084Z       }
2026-06-23T10:05:47.0230160Z     },
2026-06-23T10:05:47.0230242Z     {
2026-06-23T10:05:47.0230327Z       "id": "REQ-MSG-1",
2026-06-23T10:05:47.0230766Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-23T10:05:47.0230872Z       "requiredStages": [
2026-06-23T10:05:47.0230957Z         "impl",
2026-06-23T10:05:47.0231042Z         "unit",
2026-06-23T10:05:47.0231128Z         "int"
2026-06-23T10:05:47.0231206Z       ],
2026-06-23T10:05:47.0231291Z       "stages": {
2026-06-23T10:05:47.0231366Z         "doc": {
2026-06-23T10:05:47.0231465Z           "complete": false,
2026-06-23T10:05:47.0231547Z           "evidence": []
2026-06-23T10:05:47.0231629Z         },
2026-06-23T10:05:47.0231709Z         "impl": {
2026-06-23T10:05:47.0231804Z           "complete": true,
2026-06-23T10:05:47.0231886Z           "evidence": [
2026-06-23T10:05:47.0231977Z             {
2026-06-23T10:05:47.0232104Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T10:05:47.0232191Z               "line": 28
2026-06-23T10:05:47.0232276Z             },
2026-06-23T10:05:47.0232362Z             {
2026-06-23T10:05:47.0232482Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T10:05:47.0232563Z               "line": 94
2026-06-23T10:05:47.0232649Z             },
2026-06-23T10:05:47.0232729Z             {
2026-06-23T10:05:47.0232840Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T10:05:47.0232939Z               "line": 127
2026-06-23T10:05:47.0233015Z             },
2026-06-23T10:05:47.0233092Z             {
2026-06-23T10:05:47.0233311Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T10:05:47.0233397Z               "line": 149
2026-06-23T10:05:47.0233484Z             },
2026-06-23T10:05:47.0233568Z             {
2026-06-23T10:05:47.0233677Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T10:05:47.0233768Z               "line": 174
2026-06-23T10:05:47.0233858Z             },
2026-06-23T10:05:47.0233937Z             {
2026-06-23T10:05:47.0234061Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-23T10:05:47.0234152Z               "line": 18
2026-06-23T10:05:47.0234233Z             },
2026-06-23T10:05:47.0234409Z             {
2026-06-23T10:05:47.0234514Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T10:05:47.0234609Z               "line": 13
2026-06-23T10:05:47.0234685Z             },
2026-06-23T10:05:47.0234777Z             {
2026-06-23T10:05:47.0234886Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T10:05:47.0234971Z               "line": 62
2026-06-23T10:05:47.0235068Z             },
2026-06-23T10:05:47.0235148Z             {
2026-06-23T10:05:47.0235252Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T10:05:47.0235344Z               "line": 13
2026-06-23T10:05:47.0235426Z             }
2026-06-23T10:05:47.0235506Z           ]
2026-06-23T10:05:47.0235582Z         },
2026-06-23T10:05:47.0235669Z         "int": {
2026-06-23T10:05:47.0235750Z           "complete": true,
2026-06-23T10:05:47.0235839Z           "evidence": [
2026-06-23T10:05:47.0235920Z             {
2026-06-23T10:05:47.0236055Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-23T10:05:47.0236153Z               "line": 9
2026-06-23T10:05:47.0236240Z             },
2026-06-23T10:05:47.0236332Z             {
2026-06-23T10:05:47.0236463Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-23T10:05:47.0236554Z               "line": 56
2026-06-23T10:05:47.0236635Z             },
2026-06-23T10:05:47.0236725Z             {
2026-06-23T10:05:47.0236861Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-23T10:05:47.0236948Z               "line": 113
2026-06-23T10:05:47.0237033Z             }
2026-06-23T10:05:47.0237119Z           ]
2026-06-23T10:05:47.0237204Z         },
2026-06-23T10:05:47.0237291Z         "unit": {
2026-06-23T10:05:47.0237381Z           "complete": true,
2026-06-23T10:05:47.0237466Z           "evidence": [
2026-06-23T10:05:47.0237552Z             {
2026-06-23T10:05:47.0237658Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T10:05:47.0237744Z               "line": 203
2026-06-23T10:05:47.0237838Z             },
2026-06-23T10:05:47.0237920Z             {
2026-06-23T10:05:47.0238020Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T10:05:47.0238110Z               "line": 232
2026-06-23T10:05:47.0238191Z             },
2026-06-23T10:05:47.0238274Z             {
2026-06-23T10:05:47.0238373Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T10:05:47.0238468Z               "line": 277
2026-06-23T10:05:47.0238555Z             },
2026-06-23T10:05:47.0238636Z             {
2026-06-23T10:05:47.0238740Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T10:05:47.0238826Z               "line": 300
2026-06-23T10:05:47.0238913Z             },
2026-06-23T10:05:47.0239073Z             {
2026-06-23T10:05:47.0239187Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T10:05:47.0239273Z               "line": 325
2026-06-23T10:05:47.0239356Z             },
2026-06-23T10:05:47.0239437Z             {
2026-06-23T10:05:47.0239543Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-23T10:05:47.0239643Z               "line": 204
2026-06-23T10:05:47.0239723Z             },
2026-06-23T10:05:47.0239810Z             {
2026-06-23T10:05:47.0239925Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-23T10:05:47.0240014Z               "line": 237
2026-06-23T10:05:47.0240095Z             },
2026-06-23T10:05:47.0240315Z             {
2026-06-23T10:05:47.0240424Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-23T10:05:47.0240512Z               "line": 251
2026-06-23T10:05:47.0240587Z             },
2026-06-23T10:05:47.0240672Z             {
2026-06-23T10:05:47.0240778Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-23T10:05:47.0240868Z               "line": 263
2026-06-23T10:05:47.0240949Z             },
2026-06-23T10:05:47.0241040Z             {
2026-06-23T10:05:47.0241136Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T10:05:47.0241221Z               "line": 162
2026-06-23T10:05:47.0241408Z             },
2026-06-23T10:05:47.0241489Z             {
2026-06-23T10:05:47.0241597Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T10:05:47.0241684Z               "line": 242
2026-06-23T10:05:47.0241761Z             },
2026-06-23T10:05:47.0241841Z             {
2026-06-23T10:05:47.0241950Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T10:05:47.0242045Z               "line": 134
2026-06-23T10:05:47.0242126Z             },
2026-06-23T10:05:47.0242212Z             {
2026-06-23T10:05:47.0242316Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T10:05:47.0242408Z               "line": 153
2026-06-23T10:05:47.0242494Z             }
2026-06-23T10:05:47.0242583Z           ]
2026-06-23T10:05:47.0242669Z         }
2026-06-23T10:05:47.0242751Z       }
2026-06-23T10:05:47.0242841Z     },
2026-06-23T10:05:47.0242927Z     {
2026-06-23T10:05:47.0243013Z       "id": "REQ-MSG-2",
2026-06-23T10:05:47.0243275Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-23T10:05:47.0243386Z       "requiredStages": [
2026-06-23T10:05:47.0243471Z         "impl",
2026-06-23T10:05:47.0243552Z         "unit"
2026-06-23T10:05:47.0243638Z       ],
2026-06-23T10:05:47.0243719Z       "stages": {
2026-06-23T10:05:47.0243814Z         "doc": {
2026-06-23T10:05:47.0243895Z           "complete": false,
2026-06-23T10:05:47.0243991Z           "evidence": []
2026-06-23T10:05:47.0244072Z         },
2026-06-23T10:05:47.0244157Z         "impl": {
2026-06-23T10:05:47.0244252Z           "complete": true,
2026-06-23T10:05:47.0244338Z           "evidence": [
2026-06-23T10:05:47.0244422Z             {
2026-06-23T10:05:47.0244521Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0244611Z               "line": 11
2026-06-23T10:05:47.0244693Z             },
2026-06-23T10:05:47.0244779Z             {
2026-06-23T10:05:47.0244888Z               "path": "crates/spt/src/main.rs",
2026-06-23T10:05:47.0244998Z               "line": 8
2026-06-23T10:05:47.0245117Z             }
2026-06-23T10:05:47.0245202Z           ]
2026-06-23T10:05:47.0245289Z         },
2026-06-23T10:05:47.0245380Z         "int": {
2026-06-23T10:05:47.0245475Z           "complete": false,
2026-06-23T10:05:47.0245560Z           "evidence": []
2026-06-23T10:05:47.0245642Z         },
2026-06-23T10:05:47.0245727Z         "unit": {
2026-06-23T10:05:47.0245827Z           "complete": true,
2026-06-23T10:05:47.0245909Z           "evidence": [
2026-06-23T10:05:47.0245995Z             {
2026-06-23T10:05:47.0246104Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0246190Z               "line": 9094
2026-06-23T10:05:47.0246277Z             },
2026-06-23T10:05:47.0246362Z             {
2026-06-23T10:05:47.0246466Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0246563Z               "line": 9136
2026-06-23T10:05:47.0246653Z             },
2026-06-23T10:05:47.0246738Z             {
2026-06-23T10:05:47.0246844Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0246935Z               "line": 9185
2026-06-23T10:05:47.0247019Z             },
2026-06-23T10:05:47.0247100Z             {
2026-06-23T10:05:47.0247205Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0247294Z               "line": 9208
2026-06-23T10:05:47.0247378Z             },
2026-06-23T10:05:47.0247464Z             {
2026-06-23T10:05:47.0247642Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0247726Z               "line": 11345
2026-06-23T10:05:47.0247812Z             },
2026-06-23T10:05:47.0247899Z             {
2026-06-23T10:05:47.0248008Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0248089Z               "line": 11354
2026-06-23T10:05:47.0248176Z             },
2026-06-23T10:05:47.0248261Z             {
2026-06-23T10:05:47.0248360Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0248456Z               "line": 11368
2026-06-23T10:05:47.0248543Z             }
2026-06-23T10:05:47.0248704Z           ]
2026-06-23T10:05:47.0248786Z         }
2026-06-23T10:05:47.0248872Z       }
2026-06-23T10:05:47.0249028Z     },
2026-06-23T10:05:47.0249111Z     {
2026-06-23T10:05:47.0249196Z       "id": "REQ-MSG-3",
2026-06-23T10:05:47.0249562Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-23T10:05:47.0249666Z       "requiredStages": [
2026-06-23T10:05:47.0249743Z         "impl",
2026-06-23T10:05:47.0249824Z         "unit",
2026-06-23T10:05:47.0249898Z         "int"
2026-06-23T10:05:47.0249978Z       ],
2026-06-23T10:05:47.0250069Z       "stages": {
2026-06-23T10:05:47.0250156Z         "doc": {
2026-06-23T10:05:47.0250255Z           "complete": false,
2026-06-23T10:05:47.0250340Z           "evidence": []
2026-06-23T10:05:47.0250423Z         },
2026-06-23T10:05:47.0250503Z         "impl": {
2026-06-23T10:05:47.0250598Z           "complete": true,
2026-06-23T10:05:47.0250689Z           "evidence": [
2026-06-23T10:05:47.0250771Z             {
2026-06-23T10:05:47.0250894Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-23T10:05:47.0250980Z               "line": 19
2026-06-23T10:05:47.0251057Z             },
2026-06-23T10:05:47.0251137Z             {
2026-06-23T10:05:47.0251242Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T10:05:47.0251333Z               "line": 21
2026-06-23T10:05:47.0251415Z             },
2026-06-23T10:05:47.0251500Z             {
2026-06-23T10:05:47.0251605Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T10:05:47.0251692Z               "line": 48
2026-06-23T10:05:47.0251776Z             },
2026-06-23T10:05:47.0251857Z             {
2026-06-23T10:05:47.0251973Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T10:05:47.0252059Z               "line": 174
2026-06-23T10:05:47.0252148Z             }
2026-06-23T10:05:47.0252215Z           ]
2026-06-23T10:05:47.0252302Z         },
2026-06-23T10:05:47.0252388Z         "int": {
2026-06-23T10:05:47.0252486Z           "complete": true,
2026-06-23T10:05:47.0252576Z           "evidence": [
2026-06-23T10:05:47.0252663Z             {
2026-06-23T10:05:47.0252805Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-23T10:05:47.0252885Z               "line": 10
2026-06-23T10:05:47.0252968Z             },
2026-06-23T10:05:47.0253058Z             {
2026-06-23T10:05:47.0253196Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-23T10:05:47.0253283Z               "line": 56
2026-06-23T10:05:47.0253368Z             }
2026-06-23T10:05:47.0253449Z           ]
2026-06-23T10:05:47.0253534Z         },
2026-06-23T10:05:47.0253617Z         "unit": {
2026-06-23T10:05:47.0253702Z           "complete": true,
2026-06-23T10:05:47.0253792Z           "evidence": [
2026-06-23T10:05:47.0253873Z             {
2026-06-23T10:05:47.0253974Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T10:05:47.0254069Z               "line": 228
2026-06-23T10:05:47.0254159Z             },
2026-06-23T10:05:47.0254242Z             {
2026-06-23T10:05:47.0254346Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T10:05:47.0254431Z               "line": 247
2026-06-23T10:05:47.0254522Z             },
2026-06-23T10:05:47.0254609Z             {
2026-06-23T10:05:47.0254712Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T10:05:47.0254921Z               "line": 270
2026-06-23T10:05:47.0255029Z             }
2026-06-23T10:05:47.0255109Z           ]
2026-06-23T10:05:47.0255200Z         }
2026-06-23T10:05:47.0255287Z       }
2026-06-23T10:05:47.0255372Z     },
2026-06-23T10:05:47.0255462Z     {
2026-06-23T10:05:47.0255549Z       "id": "REQ-MSG-4",
2026-06-23T10:05:47.0256387Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-23T10:05:47.0256593Z       "requiredStages": [
2026-06-23T10:05:47.0256683Z         "impl",
2026-06-23T10:05:47.0256765Z         "unit",
2026-06-23T10:05:47.0256851Z         "int"
2026-06-23T10:05:47.0256936Z       ],
2026-06-23T10:05:47.0257022Z       "stages": {
2026-06-23T10:05:47.0257109Z         "doc": {
2026-06-23T10:05:47.0257208Z           "complete": false,
2026-06-23T10:05:47.0257303Z           "evidence": []
2026-06-23T10:05:47.0257390Z         },
2026-06-23T10:05:47.0257471Z         "impl": {
2026-06-23T10:05:47.0257575Z           "complete": true,
2026-06-23T10:05:47.0257655Z           "evidence": [
2026-06-23T10:05:47.0257736Z             {
2026-06-23T10:05:47.0257845Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T10:05:47.0257934Z               "line": 19
2026-06-23T10:05:47.0258019Z             },
2026-06-23T10:05:47.0258106Z             {
2026-06-23T10:05:47.0258211Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T10:05:47.0258296Z               "line": 46
2026-06-23T10:05:47.0258392Z             },
2026-06-23T10:05:47.0258478Z             {
2026-06-23T10:05:47.0258587Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0258682Z               "line": 532
2026-06-23T10:05:47.0258755Z             },
2026-06-23T10:05:47.0258835Z             {
2026-06-23T10:05:47.0259026Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0259122Z               "line": 3760
2026-06-23T10:05:47.0259208Z             }
2026-06-23T10:05:47.0259283Z           ]
2026-06-23T10:05:47.0259361Z         },
2026-06-23T10:05:47.0259451Z         "int": {
2026-06-23T10:05:47.0259546Z           "complete": true,
2026-06-23T10:05:47.0259632Z           "evidence": [
2026-06-23T10:05:47.0259723Z             {
2026-06-23T10:05:47.0259845Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-23T10:05:47.0259937Z               "line": 98
2026-06-23T10:05:47.0260019Z             },
2026-06-23T10:05:47.0260104Z             {
2026-06-23T10:05:47.0260236Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-23T10:05:47.0260322Z               "line": 128
2026-06-23T10:05:47.0260403Z             }
2026-06-23T10:05:47.0260496Z           ]
2026-06-23T10:05:47.0260581Z         },
2026-06-23T10:05:47.0260663Z         "unit": {
2026-06-23T10:05:47.0260755Z           "complete": true,
2026-06-23T10:05:47.0260848Z           "evidence": [
2026-06-23T10:05:47.0260925Z             {
2026-06-23T10:05:47.0261040Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T10:05:47.0261125Z               "line": 68
2026-06-23T10:05:47.0261201Z             },
2026-06-23T10:05:47.0261283Z             {
2026-06-23T10:05:47.0261388Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T10:05:47.0261487Z               "line": 79
2026-06-23T10:05:47.0261564Z             },
2026-06-23T10:05:47.0261646Z             {
2026-06-23T10:05:47.0261760Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T10:05:47.0261845Z               "line": 90
2026-06-23T10:05:47.0261937Z             },
2026-06-23T10:05:47.0262022Z             {
2026-06-23T10:05:47.0262131Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T10:05:47.0262218Z               "line": 151
2026-06-23T10:05:47.0262309Z             }
2026-06-23T10:05:47.0262393Z           ]
2026-06-23T10:05:47.0262475Z         }
2026-06-23T10:05:47.0262566Z       }
2026-06-23T10:05:47.0262756Z     },
2026-06-23T10:05:47.0262843Z     {
2026-06-23T10:05:47.0262934Z       "id": "REQ-MSG-5",
2026-06-23T10:05:47.0263633Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-23T10:05:47.0263737Z       "requiredStages": [
2026-06-23T10:05:47.0263819Z         "doc",
2026-06-23T10:05:47.0263909Z         "impl",
2026-06-23T10:05:47.0263995Z         "unit"
2026-06-23T10:05:47.0264201Z       ],
2026-06-23T10:05:47.0264295Z       "stages": {
2026-06-23T10:05:47.0264381Z         "doc": {
2026-06-23T10:05:47.0264472Z           "complete": true,
2026-06-23T10:05:47.0264558Z           "evidence": [
2026-06-23T10:05:47.0264648Z             {
2026-06-23T10:05:47.0264743Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0264821Z               "line": 240
2026-06-23T10:05:47.0264915Z             }
2026-06-23T10:05:47.0265015Z           ]
2026-06-23T10:05:47.0265106Z         },
2026-06-23T10:05:47.0265192Z         "impl": {
2026-06-23T10:05:47.0265291Z           "complete": true,
2026-06-23T10:05:47.0265372Z           "evidence": [
2026-06-23T10:05:47.0265458Z             {
2026-06-23T10:05:47.0265566Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-23T10:05:47.0265655Z               "line": 60
2026-06-23T10:05:47.0265741Z             },
2026-06-23T10:05:47.0265818Z             {
2026-06-23T10:05:47.0265927Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:47.0266022Z               "line": 126
2026-06-23T10:05:47.0266104Z             },
2026-06-23T10:05:47.0266190Z             {
2026-06-23T10:05:47.0266299Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:47.0266390Z               "line": 135
2026-06-23T10:05:47.0266476Z             },
2026-06-23T10:05:47.0266566Z             {
2026-06-23T10:05:47.0266681Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:47.0266777Z               "line": 149
2026-06-23T10:05:47.0266867Z             },
2026-06-23T10:05:47.0266952Z             {
2026-06-23T10:05:47.0267054Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:47.0267138Z               "line": 178
2026-06-23T10:05:47.0267224Z             },
2026-06-23T10:05:47.0267310Z             {
2026-06-23T10:05:47.0267421Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0267505Z               "line": 3452
2026-06-23T10:05:47.0267591Z             }
2026-06-23T10:05:47.0267688Z           ]
2026-06-23T10:05:47.0267764Z         },
2026-06-23T10:05:47.0267863Z         "int": {
2026-06-23T10:05:47.0267950Z           "complete": true,
2026-06-23T10:05:47.0268045Z           "evidence": [
2026-06-23T10:05:47.0268130Z             {
2026-06-23T10:05:47.0268248Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-23T10:05:47.0268330Z               "line": 19
2026-06-23T10:05:47.0268428Z             }
2026-06-23T10:05:47.0268509Z           ]
2026-06-23T10:05:47.0268584Z         },
2026-06-23T10:05:47.0268675Z         "unit": {
2026-06-23T10:05:47.0268767Z           "complete": true,
2026-06-23T10:05:47.0268856Z           "evidence": [
2026-06-23T10:05:47.0269029Z             {
2026-06-23T10:05:47.0269133Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-23T10:05:47.0269218Z               "line": 192
2026-06-23T10:05:47.0269305Z             },
2026-06-23T10:05:47.0269386Z             {
2026-06-23T10:05:47.0269514Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-23T10:05:47.0269606Z               "line": 154
2026-06-23T10:05:47.0269687Z             },
2026-06-23T10:05:47.0269768Z             {
2026-06-23T10:05:47.0269882Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T10:05:47.0269973Z               "line": 122
2026-06-23T10:05:47.0270058Z             },
2026-06-23T10:05:47.0270148Z             {
2026-06-23T10:05:47.0270363Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:47.0270440Z               "line": 452
2026-06-23T10:05:47.0270521Z             },
2026-06-23T10:05:47.0270608Z             {
2026-06-23T10:05:47.0270720Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:47.0270820Z               "line": 501
2026-06-23T10:05:47.0270905Z             },
2026-06-23T10:05:47.0270981Z             {
2026-06-23T10:05:47.0271094Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:47.0271175Z               "line": 517
2026-06-23T10:05:47.0271262Z             },
2026-06-23T10:05:47.0271437Z             {
2026-06-23T10:05:47.0271543Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:47.0271638Z               "line": 536
2026-06-23T10:05:47.0271732Z             },
2026-06-23T10:05:47.0271814Z             {
2026-06-23T10:05:47.0271915Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0272010Z               "line": 9037
2026-06-23T10:05:47.0272090Z             }
2026-06-23T10:05:47.0272182Z           ]
2026-06-23T10:05:47.0272272Z         }
2026-06-23T10:05:47.0272353Z       }
2026-06-23T10:05:47.0272439Z     },
2026-06-23T10:05:47.0272526Z     {
2026-06-23T10:05:47.0272625Z       "id": "REQ-MSG-6",
2026-06-23T10:05:47.0274155Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-23T10:05:47.0274264Z       "requiredStages": [
2026-06-23T10:05:47.0274349Z         "doc",
2026-06-23T10:05:47.0274437Z         "impl",
2026-06-23T10:05:47.0274517Z         "unit"
2026-06-23T10:05:47.0274607Z       ],
2026-06-23T10:05:47.0274693Z       "stages": {
2026-06-23T10:05:47.0274780Z         "doc": {
2026-06-23T10:05:47.0274865Z           "complete": true,
2026-06-23T10:05:47.0274965Z           "evidence": [
2026-06-23T10:05:47.0275062Z             {
2026-06-23T10:05:47.0275160Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0275251Z               "line": 243
2026-06-23T10:05:47.0275328Z             }
2026-06-23T10:05:47.0275419Z           ]
2026-06-23T10:05:47.0275503Z         },
2026-06-23T10:05:47.0275589Z         "impl": {
2026-06-23T10:05:47.0275681Z           "complete": true,
2026-06-23T10:05:47.0275771Z           "evidence": [
2026-06-23T10:05:47.0275861Z             {
2026-06-23T10:05:47.0275998Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0276093Z               "line": 177
2026-06-23T10:05:47.0276178Z             },
2026-06-23T10:05:47.0276267Z             {
2026-06-23T10:05:47.0276398Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0276502Z               "line": 428
2026-06-23T10:05:47.0276592Z             },
2026-06-23T10:05:47.0276679Z             {
2026-06-23T10:05:47.0276812Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0276892Z               "line": 451
2026-06-23T10:05:47.0276980Z             },
2026-06-23T10:05:47.0277065Z             {
2026-06-23T10:05:47.0277174Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-23T10:05:47.0277265Z               "line": 89
2026-06-23T10:05:47.0277351Z             },
2026-06-23T10:05:47.0277436Z             {
2026-06-23T10:05:47.0277560Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0277666Z               "line": 155
2026-06-23T10:05:47.0277747Z             }
2026-06-23T10:05:47.0277837Z           ]
2026-06-23T10:05:47.0277914Z         },
2026-06-23T10:05:47.0277999Z         "int": {
2026-06-23T10:05:47.0278089Z           "complete": false,
2026-06-23T10:05:47.0278352Z           "evidence": []
2026-06-23T10:05:47.0278447Z         },
2026-06-23T10:05:47.0278520Z         "unit": {
2026-06-23T10:05:47.0278620Z           "complete": true,
2026-06-23T10:05:47.0278714Z           "evidence": [
2026-06-23T10:05:47.0278798Z             {
2026-06-23T10:05:47.0278928Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0279092Z               "line": 1746
2026-06-23T10:05:47.0279173Z             },
2026-06-23T10:05:47.0279250Z             {
2026-06-23T10:05:47.0279364Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-23T10:05:47.0279454Z               "line": 219
2026-06-23T10:05:47.0279632Z             }
2026-06-23T10:05:47.0279717Z           ]
2026-06-23T10:05:47.0279798Z         }
2026-06-23T10:05:47.0279880Z       }
2026-06-23T10:05:47.0279965Z     },
2026-06-23T10:05:47.0280046Z     {
2026-06-23T10:05:47.0280151Z       "id": "REQ-MSG-ENVELOPE",
2026-06-23T10:05:47.0283725Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-23T10:05:47.0283862Z       "requiredStages": [
2026-06-23T10:05:47.0283953Z         "doc",
2026-06-23T10:05:47.0284049Z         "impl",
2026-06-23T10:05:47.0284134Z         "unit",
2026-06-23T10:05:47.0284223Z         "int"
2026-06-23T10:05:47.0284304Z       ],
2026-06-23T10:05:47.0284400Z       "stages": {
2026-06-23T10:05:47.0284486Z         "doc": {
2026-06-23T10:05:47.0284571Z           "complete": true,
2026-06-23T10:05:47.0284657Z           "evidence": [
2026-06-23T10:05:47.0284753Z             {
2026-06-23T10:05:47.0284978Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-23T10:05:47.0285067Z               "line": 47
2026-06-23T10:05:47.0285148Z             }
2026-06-23T10:05:47.0285234Z           ]
2026-06-23T10:05:47.0285307Z         },
2026-06-23T10:05:47.0285392Z         "impl": {
2026-06-23T10:05:47.0285491Z           "complete": true,
2026-06-23T10:05:47.0285588Z           "evidence": [
2026-06-23T10:05:47.0285674Z             {
2026-06-23T10:05:47.0285801Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T10:05:47.0285893Z               "line": 20
2026-06-23T10:05:47.0285979Z             },
2026-06-23T10:05:47.0286063Z             {
2026-06-23T10:05:47.0286174Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T10:05:47.0286256Z               "line": 33
2026-06-23T10:05:47.0286341Z             },
2026-06-23T10:05:47.0286425Z             {
2026-06-23T10:05:47.0286545Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T10:05:47.0286635Z               "line": 47
2026-06-23T10:05:47.0286723Z             },
2026-06-23T10:05:47.0286813Z             {
2026-06-23T10:05:47.0286910Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T10:05:47.0287001Z               "line": 58
2026-06-23T10:05:47.0287085Z             },
2026-06-23T10:05:47.0287263Z             {
2026-06-23T10:05:47.0287362Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T10:05:47.0287457Z               "line": 14
2026-06-23T10:05:47.0287540Z             },
2026-06-23T10:05:47.0287630Z             {
2026-06-23T10:05:47.0287734Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T10:05:47.0287825Z               "line": 27
2026-06-23T10:05:47.0287916Z             },
2026-06-23T10:05:47.0288001Z             {
2026-06-23T10:05:47.0288111Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T10:05:47.0288198Z               "line": 40
2026-06-23T10:05:47.0288368Z             },
2026-06-23T10:05:47.0288465Z             {
2026-06-23T10:05:47.0288573Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:47.0288664Z               "line": 92
2026-06-23T10:05:47.0288750Z             },
2026-06-23T10:05:47.0288837Z             {
2026-06-23T10:05:47.0289031Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T10:05:47.0289133Z               "line": 143
2026-06-23T10:05:47.0289222Z             },
2026-06-23T10:05:47.0289312Z             {
2026-06-23T10:05:47.0289440Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T10:05:47.0289521Z               "line": 216
2026-06-23T10:05:47.0289605Z             },
2026-06-23T10:05:47.0289685Z             {
2026-06-23T10:05:47.0289805Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0289896Z               "line": 533
2026-06-23T10:05:47.0289972Z             },
2026-06-23T10:05:47.0290058Z             {
2026-06-23T10:05:47.0290159Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T10:05:47.0290253Z               "line": 78
2026-06-23T10:05:47.0290333Z             },
2026-06-23T10:05:47.0290412Z             {
2026-06-23T10:05:47.0290521Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0290606Z               "line": 3761
2026-06-23T10:05:47.0290688Z             }
2026-06-23T10:05:47.0290769Z           ]
2026-06-23T10:05:47.0290864Z         },
2026-06-23T10:05:47.0290945Z         "int": {
2026-06-23T10:05:47.0291046Z           "complete": true,
2026-06-23T10:05:47.0291136Z           "evidence": [
2026-06-23T10:05:47.0291221Z             {
2026-06-23T10:05:47.0291351Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-23T10:05:47.0291441Z               "line": 15
2026-06-23T10:05:47.0291531Z             }
2026-06-23T10:05:47.0291612Z           ]
2026-06-23T10:05:47.0291695Z         },
2026-06-23T10:05:47.0291780Z         "unit": {
2026-06-23T10:05:47.0291874Z           "complete": true,
2026-06-23T10:05:47.0291964Z           "evidence": [
2026-06-23T10:05:47.0292054Z             {
2026-06-23T10:05:47.0292167Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T10:05:47.0292257Z               "line": 102
2026-06-23T10:05:47.0292339Z             },
2026-06-23T10:05:47.0292430Z             {
2026-06-23T10:05:47.0292538Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T10:05:47.0292629Z               "line": 137
2026-06-23T10:05:47.0292711Z             },
2026-06-23T10:05:47.0292801Z             {
2026-06-23T10:05:47.0292906Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T10:05:47.0295489Z               "line": 98
2026-06-23T10:05:47.0295614Z             },
2026-06-23T10:05:47.0295690Z             {
2026-06-23T10:05:47.0295813Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T10:05:47.0295909Z               "line": 106
2026-06-23T10:05:47.0295985Z             },
2026-06-23T10:05:47.0296070Z             {
2026-06-23T10:05:47.0296191Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T10:05:47.0296295Z               "line": 113
2026-06-23T10:05:47.0296380Z             },
2026-06-23T10:05:47.0296468Z             {
2026-06-23T10:05:47.0296577Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T10:05:47.0296672Z               "line": 122
2026-06-23T10:05:47.0296753Z             }
2026-06-23T10:05:47.0296840Z           ]
2026-06-23T10:05:47.0297061Z         }
2026-06-23T10:05:47.0297147Z       }
2026-06-23T10:05:47.0297237Z     },
2026-06-23T10:05:47.0297322Z     {
2026-06-23T10:05:47.0297446Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-23T10:05:47.0302434Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-23T10:05:47.0302703Z       "requiredStages": [
2026-06-23T10:05:47.0302793Z         "doc",
2026-06-23T10:05:47.0302899Z         "impl",
2026-06-23T10:05:47.0302985Z         "unit",
2026-06-23T10:05:47.0303070Z         "int"
2026-06-23T10:05:47.0303156Z       ],
2026-06-23T10:05:47.0303238Z       "stages": {
2026-06-23T10:05:47.0303323Z         "doc": {
2026-06-23T10:05:47.0303423Z           "complete": true,
2026-06-23T10:05:47.0303519Z           "evidence": [
2026-06-23T10:05:47.0303605Z             {
2026-06-23T10:05:47.0303747Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-23T10:05:47.0303834Z               "line": 277
2026-06-23T10:05:47.0303919Z             },
2026-06-23T10:05:47.0304005Z             {
2026-06-23T10:05:47.0304105Z               "path": "docs/MANIFEST.md",
2026-06-23T10:05:47.0304196Z               "line": 214
2026-06-23T10:05:47.0304281Z             }
2026-06-23T10:05:47.0304367Z           ]
2026-06-23T10:05:47.0304453Z         },
2026-06-23T10:05:47.0304540Z         "impl": {
2026-06-23T10:05:47.0304629Z           "complete": true,
2026-06-23T10:05:47.0304715Z           "evidence": [
2026-06-23T10:05:47.0304798Z             {
2026-06-23T10:05:47.0304929Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:47.0305021Z               "line": 1043
2026-06-23T10:05:47.0305112Z             },
2026-06-23T10:05:47.0305188Z             {
2026-06-23T10:05:47.0305310Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:47.0305396Z               "line": 1097
2026-06-23T10:05:47.0305487Z             },
2026-06-23T10:05:47.0305564Z             {
2026-06-23T10:05:47.0305691Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-23T10:05:47.0305792Z               "line": 23
2026-06-23T10:05:47.0305878Z             },
2026-06-23T10:05:47.0305959Z             {
2026-06-23T10:05:47.0306084Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-23T10:05:47.0306169Z               "line": 91
2026-06-23T10:05:47.0306259Z             },
2026-06-23T10:05:47.0306345Z             {
2026-06-23T10:05:47.0306469Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-23T10:05:47.0306669Z               "line": 239
2026-06-23T10:05:47.0306761Z             },
2026-06-23T10:05:47.0306846Z             {
2026-06-23T10:05:47.0306974Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-23T10:05:47.0307071Z               "line": 287
2026-06-23T10:05:47.0307161Z             },
2026-06-23T10:05:47.0307246Z             {
2026-06-23T10:05:47.0307362Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-23T10:05:47.0307457Z               "line": 311
2026-06-23T10:05:47.0307531Z             },
2026-06-23T10:05:47.0307693Z             {
2026-06-23T10:05:47.0307825Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0307910Z               "line": 60
2026-06-23T10:05:47.0308001Z             },
2026-06-23T10:05:47.0308082Z             {
2026-06-23T10:05:47.0308196Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0308282Z               "line": 936
2026-06-23T10:05:47.0308374Z             }
2026-06-23T10:05:47.0308459Z           ]
2026-06-23T10:05:47.0308539Z         },
2026-06-23T10:05:47.0308631Z         "int": {
2026-06-23T10:05:47.0308722Z           "complete": true,
2026-06-23T10:05:47.0308816Z           "evidence": [
2026-06-23T10:05:47.0308892Z             {
2026-06-23T10:05:47.0309113Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T10:05:47.0309202Z               "line": 1214
2026-06-23T10:05:47.0309280Z             },
2026-06-23T10:05:47.0309384Z             {
2026-06-23T10:05:47.0309570Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T10:05:47.0309671Z               "line": 1319
2026-06-23T10:05:47.0309755Z             },
2026-06-23T10:05:47.0309841Z             {
2026-06-23T10:05:47.0309986Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T10:05:47.0310074Z               "line": 1387
2026-06-23T10:05:47.0310151Z             },
2026-06-23T10:05:47.0310243Z             {
2026-06-23T10:05:47.0310380Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T10:05:47.0310470Z               "line": 1480
2026-06-23T10:05:47.0310546Z             }
2026-06-23T10:05:47.0310632Z           ]
2026-06-23T10:05:47.0310716Z         },
2026-06-23T10:05:47.0310801Z         "unit": {
2026-06-23T10:05:47.0310887Z           "complete": true,
2026-06-23T10:05:47.0310969Z           "evidence": [
2026-06-23T10:05:47.0311054Z             {
2026-06-23T10:05:47.0311178Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T10:05:47.0311279Z               "line": 276
2026-06-23T10:05:47.0311355Z             },
2026-06-23T10:05:47.0311440Z             {
2026-06-23T10:05:47.0311561Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-23T10:05:47.0311636Z               "line": 350
2026-06-23T10:05:47.0311721Z             },
2026-06-23T10:05:47.0311803Z             {
2026-06-23T10:05:47.0311927Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-23T10:05:47.0312013Z               "line": 381
2026-06-23T10:05:47.0312094Z             },
2026-06-23T10:05:47.0312181Z             {
2026-06-23T10:05:47.0312303Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-23T10:05:47.0312399Z               "line": 411
2026-06-23T10:05:47.0312481Z             },
2026-06-23T10:05:47.0312571Z             {
2026-06-23T10:05:47.0312680Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-23T10:05:47.0312762Z               "line": 440
2026-06-23T10:05:47.0312853Z             },
2026-06-23T10:05:47.0312942Z             {
2026-06-23T10:05:47.0313065Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0313156Z               "line": 1228
2026-06-23T10:05:47.0313245Z             }
2026-06-23T10:05:47.0313316Z           ]
2026-06-23T10:05:47.0313411Z         }
2026-06-23T10:05:47.0313492Z       }
2026-06-23T10:05:47.0313578Z     },
2026-06-23T10:05:47.0313779Z     {
2026-06-23T10:05:47.0313864Z       "id": "REQ-NET-1",
2026-06-23T10:05:47.0314050Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-23T10:05:47.0314141Z       "requiredStages": [
2026-06-23T10:05:47.0314231Z         "impl",
2026-06-23T10:05:47.0314317Z         "unit",
2026-06-23T10:05:47.0314409Z         "int"
2026-06-23T10:05:47.0314484Z       ],
2026-06-23T10:05:47.0314565Z       "stages": {
2026-06-23T10:05:47.0314655Z         "doc": {
2026-06-23T10:05:47.0314743Z           "complete": false,
2026-06-23T10:05:47.0314837Z           "evidence": []
2026-06-23T10:05:47.0315009Z         },
2026-06-23T10:05:47.0315109Z         "impl": {
2026-06-23T10:05:47.0315204Z           "complete": true,
2026-06-23T10:05:47.0315294Z           "evidence": [
2026-06-23T10:05:47.0315382Z             {
2026-06-23T10:05:47.0315509Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T10:05:47.0315605Z               "line": 54
2026-06-23T10:05:47.0315682Z             },
2026-06-23T10:05:47.0315776Z             {
2026-06-23T10:05:47.0315899Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T10:05:47.0315989Z               "line": 594
2026-06-23T10:05:47.0316076Z             },
2026-06-23T10:05:47.0316161Z             {
2026-06-23T10:05:47.0316280Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-23T10:05:47.0316372Z               "line": 130
2026-06-23T10:05:47.0316458Z             },
2026-06-23T10:05:47.0316547Z             {
2026-06-23T10:05:47.0316654Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0316753Z               "line": 97
2026-06-23T10:05:47.0316829Z             },
2026-06-23T10:05:47.0316910Z             {
2026-06-23T10:05:47.0317029Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0317110Z               "line": 159
2026-06-23T10:05:47.0317196Z             },
2026-06-23T10:05:47.0317278Z             {
2026-06-23T10:05:47.0317392Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0317487Z               "line": 175
2026-06-23T10:05:47.0317568Z             },
2026-06-23T10:05:47.0317655Z             {
2026-06-23T10:05:47.0317758Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0317859Z               "line": 190
2026-06-23T10:05:47.0317946Z             },
2026-06-23T10:05:47.0318035Z             {
2026-06-23T10:05:47.0318144Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0318234Z               "line": 271
2026-06-23T10:05:47.0318325Z             },
2026-06-23T10:05:47.0318409Z             {
2026-06-23T10:05:47.0318523Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0318609Z               "line": 306
2026-06-23T10:05:47.0318696Z             },
2026-06-23T10:05:47.0318780Z             {
2026-06-23T10:05:47.0318900Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0319057Z               "line": 312
2026-06-23T10:05:47.0319133Z             },
2026-06-23T10:05:47.0319220Z             {
2026-06-23T10:05:47.0319329Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0319438Z               "line": 318
2026-06-23T10:05:47.0319525Z             },
2026-06-23T10:05:47.0319606Z             {
2026-06-23T10:05:47.0319720Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0319801Z               "line": 334
2026-06-23T10:05:47.0319887Z             },
2026-06-23T10:05:47.0319972Z             {
2026-06-23T10:05:47.0320091Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0320183Z               "line": 354
2026-06-23T10:05:47.0320273Z             },
2026-06-23T10:05:47.0320354Z             {
2026-06-23T10:05:47.0320470Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-23T10:05:47.0320565Z               "line": 35
2026-06-23T10:05:47.0320649Z             },
2026-06-23T10:05:47.0320736Z             {
2026-06-23T10:05:47.0320959Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-23T10:05:47.0321049Z               "line": 85
2026-06-23T10:05:47.0321130Z             },
2026-06-23T10:05:47.0321215Z             {
2026-06-23T10:05:47.0321337Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:47.0321419Z               "line": 138
2026-06-23T10:05:47.0321505Z             },
2026-06-23T10:05:47.0321591Z             {
2026-06-23T10:05:47.0321700Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0321796Z               "line": 3603
2026-06-23T10:05:47.0321872Z             },
2026-06-23T10:05:47.0322063Z             {
2026-06-23T10:05:47.0322172Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T10:05:47.0322263Z               "line": 17
2026-06-23T10:05:47.0322353Z             }
2026-06-23T10:05:47.0322435Z           ]
2026-06-23T10:05:47.0322525Z         },
2026-06-23T10:05:47.0322610Z         "int": {
2026-06-23T10:05:47.0322702Z           "complete": true,
2026-06-23T10:05:47.0322798Z           "evidence": [
2026-06-23T10:05:47.0322882Z             {
2026-06-23T10:05:47.0323012Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T10:05:47.0323098Z               "line": 341
2026-06-23T10:05:47.0323182Z             },
2026-06-23T10:05:47.0323264Z             {
2026-06-23T10:05:47.0323385Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0323465Z               "line": 677
2026-06-23T10:05:47.0323554Z             },
2026-06-23T10:05:47.0323639Z             {
2026-06-23T10:05:47.0323754Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0323847Z               "line": 975
2026-06-23T10:05:47.0323932Z             }
2026-06-23T10:05:47.0324019Z           ]
2026-06-23T10:05:47.0324106Z         },
2026-06-23T10:05:47.0324200Z         "unit": {
2026-06-23T10:05:47.0324295Z           "complete": true,
2026-06-23T10:05:47.0324372Z           "evidence": [
2026-06-23T10:05:47.0324454Z             {
2026-06-23T10:05:47.0324576Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T10:05:47.0324654Z               "line": 651
2026-06-23T10:05:47.0324739Z             },
2026-06-23T10:05:47.0324829Z             {
2026-06-23T10:05:47.0324940Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T10:05:47.0325026Z               "line": 686
2026-06-23T10:05:47.0325111Z             },
2026-06-23T10:05:47.0325192Z             {
2026-06-23T10:05:47.0325317Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T10:05:47.0325392Z               "line": 944
2026-06-23T10:05:47.0325478Z             },
2026-06-23T10:05:47.0325564Z             {
2026-06-23T10:05:47.0325665Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-23T10:05:47.0325749Z               "line": 201
2026-06-23T10:05:47.0325836Z             },
2026-06-23T10:05:47.0325922Z             {
2026-06-23T10:05:47.0326031Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0326122Z               "line": 442
2026-06-23T10:05:47.0326209Z             },
2026-06-23T10:05:47.0326290Z             {
2026-06-23T10:05:47.0326407Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0326487Z               "line": 456
2026-06-23T10:05:47.0326574Z             },
2026-06-23T10:05:47.0326656Z             {
2026-06-23T10:05:47.0326779Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0326874Z               "line": 475
2026-06-23T10:05:47.0326956Z             },
2026-06-23T10:05:47.0327046Z             {
2026-06-23T10:05:47.0327160Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-23T10:05:47.0327261Z               "line": 120
2026-06-23T10:05:47.0327342Z             },
2026-06-23T10:05:47.0327413Z             {
2026-06-23T10:05:47.0327528Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-23T10:05:47.0327613Z               "line": 163
2026-06-23T10:05:47.0327694Z             },
2026-06-23T10:05:47.0327881Z             {
2026-06-23T10:05:47.0328004Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T10:05:47.0328089Z               "line": 530
2026-06-23T10:05:47.0328177Z             },
2026-06-23T10:05:47.0328262Z             {
2026-06-23T10:05:47.0328371Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T10:05:47.0328462Z               "line": 616
2026-06-23T10:05:47.0328544Z             },
2026-06-23T10:05:47.0328633Z             {
2026-06-23T10:05:47.0328733Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T10:05:47.0328819Z               "line": 1006
2026-06-23T10:05:47.0329059Z             }
2026-06-23T10:05:47.0329136Z           ]
2026-06-23T10:05:47.0329222Z         }
2026-06-23T10:05:47.0329303Z       }
2026-06-23T10:05:47.0329412Z     },
2026-06-23T10:05:47.0329494Z     {
2026-06-23T10:05:47.0329579Z       "id": "REQ-NET-2",
2026-06-23T10:05:47.0329756Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-23T10:05:47.0329856Z       "requiredStages": [
2026-06-23T10:05:47.0329936Z         "impl"
2026-06-23T10:05:47.0330022Z       ],
2026-06-23T10:05:47.0330118Z       "stages": {
2026-06-23T10:05:47.0330209Z         "doc": {
2026-06-23T10:05:47.0330299Z           "complete": false,
2026-06-23T10:05:47.0330390Z           "evidence": []
2026-06-23T10:05:47.0330471Z         },
2026-06-23T10:05:47.0330566Z         "impl": {
2026-06-23T10:05:47.0330647Z           "complete": true,
2026-06-23T10:05:47.0330739Z           "evidence": [
2026-06-23T10:05:47.0330824Z             {
2026-06-23T10:05:47.0330943Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T10:05:47.0331044Z               "line": 57
2026-06-23T10:05:47.0331125Z             },
2026-06-23T10:05:47.0331209Z             {
2026-06-23T10:05:47.0331320Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0331406Z               "line": 71
2026-06-23T10:05:47.0331491Z             },
2026-06-23T10:05:47.0331576Z             {
2026-06-23T10:05:47.0331705Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0331785Z               "line": 81
2026-06-23T10:05:47.0331869Z             },
2026-06-23T10:05:47.0331955Z             {
2026-06-23T10:05:47.0332075Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0332170Z               "line": 159
2026-06-23T10:05:47.0332255Z             },
2026-06-23T10:05:47.0332342Z             {
2026-06-23T10:05:47.0332457Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0332550Z               "line": 175
2026-06-23T10:05:47.0332633Z             },
2026-06-23T10:05:47.0332728Z             {
2026-06-23T10:05:47.0332851Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T10:05:47.0332937Z               "line": 190
2026-06-23T10:05:47.0333019Z             }
2026-06-23T10:05:47.0333099Z           ]
2026-06-23T10:05:47.0333185Z         },
2026-06-23T10:05:47.0333267Z         "int": {
2026-06-23T10:05:47.0333367Z           "complete": false,
2026-06-23T10:05:47.0333462Z           "evidence": []
2026-06-23T10:05:47.0333543Z         },
2026-06-23T10:05:47.0333634Z         "unit": {
2026-06-23T10:05:47.0333719Z           "complete": true,
2026-06-23T10:05:47.0333805Z           "evidence": [
2026-06-23T10:05:47.0333892Z             {
2026-06-23T10:05:47.0334002Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T10:05:47.0334090Z               "line": 402
2026-06-23T10:05:47.0334176Z             }
2026-06-23T10:05:47.0334266Z           ]
2026-06-23T10:05:47.0334347Z         }
2026-06-23T10:05:47.0334436Z       }
2026-06-23T10:05:47.0334521Z     },
2026-06-23T10:05:47.0334603Z     {
2026-06-23T10:05:47.0334694Z       "id": "REQ-NET-3",
2026-06-23T10:05:47.0334870Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-23T10:05:47.0334966Z       "requiredStages": [
2026-06-23T10:05:47.0335051Z         "impl",
2026-06-23T10:05:47.0335141Z         "unit"
2026-06-23T10:05:47.0335224Z       ],
2026-06-23T10:05:47.0335427Z       "stages": {
2026-06-23T10:05:47.0335514Z         "doc": {
2026-06-23T10:05:47.0335605Z           "complete": false,
2026-06-23T10:05:47.0335695Z           "evidence": []
2026-06-23T10:05:47.0335776Z         },
2026-06-23T10:05:47.0335863Z         "impl": {
2026-06-23T10:05:47.0335957Z           "complete": true,
2026-06-23T10:05:47.0336047Z           "evidence": [
2026-06-23T10:05:47.0336134Z             {
2026-06-23T10:05:47.0336253Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T10:05:47.0336353Z               "line": 39
2026-06-23T10:05:47.0336444Z             },
2026-06-23T10:05:47.0336638Z             {
2026-06-23T10:05:47.0336754Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T10:05:47.0336836Z               "line": 182
2026-06-23T10:05:47.0336920Z             },
2026-06-23T10:05:47.0337005Z             {
2026-06-23T10:05:47.0337115Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T10:05:47.0337206Z               "line": 333
2026-06-23T10:05:47.0337296Z             },
2026-06-23T10:05:47.0337386Z             {
2026-06-23T10:05:47.0337497Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-23T10:05:47.0337582Z               "line": 36
2026-06-23T10:05:47.0337663Z             },
2026-06-23T10:05:47.0337749Z             {
2026-06-23T10:05:47.0337873Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0337963Z               "line": 158
2026-06-23T10:05:47.0338050Z             },
2026-06-23T10:05:47.0338145Z             {
2026-06-23T10:05:47.0338259Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0338364Z               "line": 238
2026-06-23T10:05:47.0338446Z             },
2026-06-23T10:05:47.0338531Z             {
2026-06-23T10:05:47.0338655Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0338747Z               "line": 259
2026-06-23T10:05:47.0338831Z             },
2026-06-23T10:05:47.0338917Z             {
2026-06-23T10:05:47.0339137Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0339226Z               "line": 317
2026-06-23T10:05:47.0339311Z             },
2026-06-23T10:05:47.0339407Z             {
2026-06-23T10:05:47.0339529Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0339619Z               "line": 336
2026-06-23T10:05:47.0339696Z             },
2026-06-23T10:05:47.0339778Z             {
2026-06-23T10:05:47.0339901Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0339991Z               "line": 374
2026-06-23T10:05:47.0340083Z             },
2026-06-23T10:05:47.0340168Z             {
2026-06-23T10:05:47.0340277Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0340373Z               "line": 419
2026-06-23T10:05:47.0340449Z             },
2026-06-23T10:05:47.0340535Z             {
2026-06-23T10:05:47.0340655Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0340745Z               "line": 432
2026-06-23T10:05:47.0340831Z             },
2026-06-23T10:05:47.0340916Z             {
2026-06-23T10:05:47.0341041Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T10:05:47.0341122Z               "line": 29
2026-06-23T10:05:47.0341202Z             },
2026-06-23T10:05:47.0341285Z             {
2026-06-23T10:05:47.0341403Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T10:05:47.0341489Z               "line": 72
2026-06-23T10:05:47.0341566Z             },
2026-06-23T10:05:47.0341656Z             {
2026-06-23T10:05:47.0341765Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T10:05:47.0341851Z               "line": 123
2026-06-23T10:05:47.0341934Z             }
2026-06-23T10:05:47.0342018Z           ]
2026-06-23T10:05:47.0342108Z         },
2026-06-23T10:05:47.0342188Z         "int": {
2026-06-23T10:05:47.0342284Z           "complete": false,
2026-06-23T10:05:47.0342368Z           "evidence": []
2026-06-23T10:05:47.0342553Z         },
2026-06-23T10:05:47.0342635Z         "unit": {
2026-06-23T10:05:47.0342725Z           "complete": true,
2026-06-23T10:05:47.0342825Z           "evidence": [
2026-06-23T10:05:47.0342907Z             {
2026-06-23T10:05:47.0343031Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-23T10:05:47.0343120Z               "line": 223
2026-06-23T10:05:47.0343208Z             },
2026-06-23T10:05:47.0343293Z             {
2026-06-23T10:05:47.0343416Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-23T10:05:47.0343507Z               "line": 351
2026-06-23T10:05:47.0343684Z             },
2026-06-23T10:05:47.0343779Z             {
2026-06-23T10:05:47.0343880Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-23T10:05:47.0343970Z               "line": 504
2026-06-23T10:05:47.0344055Z             },
2026-06-23T10:05:47.0344137Z             {
2026-06-23T10:05:47.0344247Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-23T10:05:47.0344341Z               "line": 93
2026-06-23T10:05:47.0344428Z             },
2026-06-23T10:05:47.0344509Z             {
2026-06-23T10:05:47.0344618Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-23T10:05:47.0344703Z               "line": 142
2026-06-23T10:05:47.0344789Z             },
2026-06-23T10:05:47.0344874Z             {
2026-06-23T10:05:47.0344986Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T10:05:47.0345072Z               "line": 315
2026-06-23T10:05:47.0345158Z             },
2026-06-23T10:05:47.0345245Z             {
2026-06-23T10:05:47.0345363Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T10:05:47.0345459Z               "line": 355
2026-06-23T10:05:47.0345544Z             },
2026-06-23T10:05:47.0345630Z             {
2026-06-23T10:05:47.0345750Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T10:05:47.0345831Z               "line": 494
2026-06-23T10:05:47.0345917Z             }
2026-06-23T10:05:47.0346011Z           ]
2026-06-23T10:05:47.0346084Z         }
2026-06-23T10:05:47.0346174Z       }
2026-06-23T10:05:47.0346241Z     },
2026-06-23T10:05:47.0346331Z     {
2026-06-23T10:05:47.0346423Z       "id": "REQ-NODE-IDENTITY",
2026-06-23T10:05:47.0346660Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-23T10:05:47.0346761Z       "requiredStages": [
2026-06-23T10:05:47.0346851Z         "impl",
2026-06-23T10:05:47.0346936Z         "unit"
2026-06-23T10:05:47.0347019Z       ],
2026-06-23T10:05:47.0347114Z       "stages": {
2026-06-23T10:05:47.0347198Z         "doc": {
2026-06-23T10:05:47.0347304Z           "complete": false,
2026-06-23T10:05:47.0347405Z           "evidence": []
2026-06-23T10:05:47.0347494Z         },
2026-06-23T10:05:47.0347570Z         "impl": {
2026-06-23T10:05:47.0347656Z           "complete": true,
2026-06-23T10:05:47.0347738Z           "evidence": [
2026-06-23T10:05:47.0347819Z             {
2026-06-23T10:05:47.0347941Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T10:05:47.0348033Z               "line": 60
2026-06-23T10:05:47.0348119Z             },
2026-06-23T10:05:47.0348208Z             {
2026-06-23T10:05:47.0348329Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T10:05:47.0348428Z               "line": 68
2026-06-23T10:05:47.0348504Z             },
2026-06-23T10:05:47.0348590Z             {
2026-06-23T10:05:47.0348701Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T10:05:47.0348786Z               "line": 86
2026-06-23T10:05:47.0348871Z             },
2026-06-23T10:05:47.0349039Z             {
2026-06-23T10:05:47.0349167Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T10:05:47.0349249Z               "line": 120
2026-06-23T10:05:47.0349340Z             },
2026-06-23T10:05:47.0349429Z             {
2026-06-23T10:05:47.0349544Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T10:05:47.0349641Z               "line": 127
2026-06-23T10:05:47.0349820Z             },
2026-06-23T10:05:47.0349910Z             {
2026-06-23T10:05:47.0350023Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T10:05:47.0350118Z               "line": 143
2026-06-23T10:05:47.0350208Z             },
2026-06-23T10:05:47.0350290Z             {
2026-06-23T10:05:47.0350408Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-23T10:05:47.0350493Z               "line": 16
2026-06-23T10:05:47.0350580Z             }
2026-06-23T10:05:47.0350652Z           ]
2026-06-23T10:05:47.0350737Z         },
2026-06-23T10:05:47.0350822Z         "int": {
2026-06-23T10:05:47.0351015Z           "complete": false,
2026-06-23T10:05:47.0351100Z           "evidence": []
2026-06-23T10:05:47.0351186Z         },
2026-06-23T10:05:47.0351272Z         "unit": {
2026-06-23T10:05:47.0351357Z           "complete": true,
2026-06-23T10:05:47.0351457Z           "evidence": [
2026-06-23T10:05:47.0351544Z             {
2026-06-23T10:05:47.0351663Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T10:05:47.0351763Z               "line": 199
2026-06-23T10:05:47.0351840Z             },
2026-06-23T10:05:47.0351925Z             {
2026-06-23T10:05:47.0352030Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T10:05:47.0352121Z               "line": 218
2026-06-23T10:05:47.0352212Z             },
2026-06-23T10:05:47.0352291Z             {
2026-06-23T10:05:47.0352411Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T10:05:47.0352499Z               "line": 234
2026-06-23T10:05:47.0352578Z             },
2026-06-23T10:05:47.0352658Z             {
2026-06-23T10:05:47.0352786Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T10:05:47.0352867Z               "line": 256
2026-06-23T10:05:47.0352947Z             },
2026-06-23T10:05:47.0353036Z             {
2026-06-23T10:05:47.0353147Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-23T10:05:47.0353238Z               "line": 124
2026-06-23T10:05:47.0353318Z             },
2026-06-23T10:05:47.0353395Z             {
2026-06-23T10:05:47.0353500Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-23T10:05:47.0353586Z               "line": 140
2026-06-23T10:05:47.0353671Z             },
2026-06-23T10:05:47.0353743Z             {
2026-06-23T10:05:47.0353863Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-23T10:05:47.0353952Z               "line": 155
2026-06-23T10:05:47.0354039Z             }
2026-06-23T10:05:47.0354116Z           ]
2026-06-23T10:05:47.0354201Z         }
2026-06-23T10:05:47.0354291Z       }
2026-06-23T10:05:47.0354377Z     },
2026-06-23T10:05:47.0354468Z     {
2026-06-23T10:05:47.0354553Z       "id": "REQ-NOTIF-1",
2026-06-23T10:05:47.0354906Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-23T10:05:47.0355012Z       "requiredStages": [
2026-06-23T10:05:47.0355098Z         "impl",
2026-06-23T10:05:47.0355187Z         "unit",
2026-06-23T10:05:47.0355277Z         "int"
2026-06-23T10:05:47.0355363Z       ],
2026-06-23T10:05:47.0355453Z       "stages": {
2026-06-23T10:05:47.0355537Z         "doc": {
2026-06-23T10:05:47.0355637Z           "complete": false,
2026-06-23T10:05:47.0355718Z           "evidence": []
2026-06-23T10:05:47.0355801Z         },
2026-06-23T10:05:47.0355885Z         "impl": {
2026-06-23T10:05:47.0355985Z           "complete": true,
2026-06-23T10:05:47.0356077Z           "evidence": [
2026-06-23T10:05:47.0356158Z             {
2026-06-23T10:05:47.0356281Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T10:05:47.0356377Z               "line": 514
2026-06-23T10:05:47.0356472Z             },
2026-06-23T10:05:47.0356557Z             {
2026-06-23T10:05:47.0356677Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0356772Z               "line": 30
2026-06-23T10:05:47.0356848Z             },
2026-06-23T10:05:47.0356934Z             {
2026-06-23T10:05:47.0357040Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0357225Z               "line": 69
2026-06-23T10:05:47.0357302Z             },
2026-06-23T10:05:47.0357387Z             {
2026-06-23T10:05:47.0357501Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0357589Z               "line": 93
2026-06-23T10:05:47.0357670Z             },
2026-06-23T10:05:47.0357754Z             {
2026-06-23T10:05:47.0357870Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0357951Z               "line": 107
2026-06-23T10:05:47.0358031Z             },
2026-06-23T10:05:47.0358116Z             {
2026-06-23T10:05:47.0358293Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0358384Z               "line": 142
2026-06-23T10:05:47.0358468Z             },
2026-06-23T10:05:47.0358560Z             {
2026-06-23T10:05:47.0358664Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0358759Z               "line": 187
2026-06-23T10:05:47.0358840Z             },
2026-06-23T10:05:47.0358923Z             {
2026-06-23T10:05:47.0359117Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0359204Z               "line": 258
2026-06-23T10:05:47.0359289Z             },
2026-06-23T10:05:47.0359375Z             {
2026-06-23T10:05:47.0359499Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0359595Z               "line": 372
2026-06-23T10:05:47.0359675Z             },
2026-06-23T10:05:47.0359756Z             {
2026-06-23T10:05:47.0359867Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0359970Z               "line": 479
2026-06-23T10:05:47.0360056Z             },
2026-06-23T10:05:47.0360133Z             {
2026-06-23T10:05:47.0360262Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T10:05:47.0360346Z               "line": 24
2026-06-23T10:05:47.0360431Z             },
2026-06-23T10:05:47.0360513Z             {
2026-06-23T10:05:47.0360630Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T10:05:47.0360734Z               "line": 34
2026-06-23T10:05:47.0360811Z             },
2026-06-23T10:05:47.0360898Z             {
2026-06-23T10:05:47.0361011Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T10:05:47.0361102Z               "line": 60
2026-06-23T10:05:47.0361174Z             },
2026-06-23T10:05:47.0361260Z             {
2026-06-23T10:05:47.0361387Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T10:05:47.0361480Z               "line": 82
2026-06-23T10:05:47.0361565Z             },
2026-06-23T10:05:47.0361650Z             {
2026-06-23T10:05:47.0361771Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T10:05:47.0361851Z               "line": 94
2026-06-23T10:05:47.0361936Z             },
2026-06-23T10:05:47.0362027Z             {
2026-06-23T10:05:47.0362142Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T10:05:47.0362233Z               "line": 96
2026-06-23T10:05:47.0362318Z             },
2026-06-23T10:05:47.0362405Z             {
2026-06-23T10:05:47.0362528Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-23T10:05:47.0362623Z               "line": 44
2026-06-23T10:05:47.0362705Z             },
2026-06-23T10:05:47.0362786Z             {
2026-06-23T10:05:47.0362900Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-23T10:05:47.0362986Z               "line": 20
2026-06-23T10:05:47.0363073Z             },
2026-06-23T10:05:47.0363152Z             {
2026-06-23T10:05:47.0363270Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-23T10:05:47.0363371Z               "line": 30
2026-06-23T10:05:47.0363446Z             },
2026-06-23T10:05:47.0363535Z             {
2026-06-23T10:05:47.0366022Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-23T10:05:47.0366154Z               "line": 50
2026-06-23T10:05:47.0366236Z             },
2026-06-23T10:05:47.0366327Z             {
2026-06-23T10:05:47.0366455Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T10:05:47.0366699Z               "line": 28
2026-06-23T10:05:47.0366779Z             },
2026-06-23T10:05:47.0366865Z             {
2026-06-23T10:05:47.0366994Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T10:05:47.0367089Z               "line": 126
2026-06-23T10:05:47.0367180Z             },
2026-06-23T10:05:47.0367266Z             {
2026-06-23T10:05:47.0367380Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T10:05:47.0367461Z               "line": 161
2026-06-23T10:05:47.0367538Z             },
2026-06-23T10:05:47.0367728Z             {
2026-06-23T10:05:47.0367844Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T10:05:47.0367933Z               "line": 202
2026-06-23T10:05:47.0368014Z             },
2026-06-23T10:05:47.0368100Z             {
2026-06-23T10:05:47.0368206Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T10:05:47.0368295Z               "line": 213
2026-06-23T10:05:47.0368386Z             },
2026-06-23T10:05:47.0368473Z             {
2026-06-23T10:05:47.0368577Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T10:05:47.0368666Z               "line": 238
2026-06-23T10:05:47.0368752Z             },
2026-06-23T10:05:47.0368838Z             {
2026-06-23T10:05:47.0368939Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T10:05:47.0369110Z               "line": 261
2026-06-23T10:05:47.0369197Z             },
2026-06-23T10:05:47.0369273Z             {
2026-06-23T10:05:47.0369396Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.0369507Z               "line": 86
2026-06-23T10:05:47.0369592Z             }
2026-06-23T10:05:47.0369677Z           ]
2026-06-23T10:05:47.0369764Z         },
2026-06-23T10:05:47.0369854Z         "int": {
2026-06-23T10:05:47.0369940Z           "complete": true,
2026-06-23T10:05:47.0370025Z           "evidence": [
2026-06-23T10:05:47.0370107Z             {
2026-06-23T10:05:47.0370235Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T10:05:47.0370330Z               "line": 285
2026-06-23T10:05:47.0370417Z             },
2026-06-23T10:05:47.0370498Z             {
2026-06-23T10:05:47.0370616Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-23T10:05:47.0370703Z               "line": 145
2026-06-23T10:05:47.0370785Z             },
2026-06-23T10:05:47.0370864Z             {
2026-06-23T10:05:47.0370982Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0371073Z               "line": 686
2026-06-23T10:05:47.0371163Z             },
2026-06-23T10:05:47.0371252Z             {
2026-06-23T10:05:47.0371376Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0371468Z               "line": 1104
2026-06-23T10:05:47.0371552Z             }
2026-06-23T10:05:47.0371638Z           ]
2026-06-23T10:05:47.0371725Z         },
2026-06-23T10:05:47.0371811Z         "unit": {
2026-06-23T10:05:47.0371900Z           "complete": true,
2026-06-23T10:05:47.0371992Z           "evidence": [
2026-06-23T10:05:47.0372082Z             {
2026-06-23T10:05:47.0372200Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0372287Z               "line": 572
2026-06-23T10:05:47.0372374Z             },
2026-06-23T10:05:47.0372464Z             {
2026-06-23T10:05:47.0372568Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0372655Z               "line": 636
2026-06-23T10:05:47.0372745Z             },
2026-06-23T10:05:47.0372826Z             {
2026-06-23T10:05:47.0372936Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0373036Z               "line": 740
2026-06-23T10:05:47.0373116Z             },
2026-06-23T10:05:47.0373197Z             {
2026-06-23T10:05:47.0373309Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0373388Z               "line": 772
2026-06-23T10:05:47.0373479Z             },
2026-06-23T10:05:47.0373561Z             {
2026-06-23T10:05:47.0373788Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0373873Z               "line": 840
2026-06-23T10:05:47.0373960Z             },
2026-06-23T10:05:47.0374053Z             {
2026-06-23T10:05:47.0374153Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0374248Z               "line": 898
2026-06-23T10:05:47.0374335Z             },
2026-06-23T10:05:47.0374420Z             {
2026-06-23T10:05:47.0374524Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0374616Z               "line": 1173
2026-06-23T10:05:47.0374706Z             },
2026-06-23T10:05:47.0374888Z             {
2026-06-23T10:05:47.0375016Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T10:05:47.0375096Z               "line": 157
2026-06-23T10:05:47.0375188Z             },
2026-06-23T10:05:47.0375274Z             {
2026-06-23T10:05:47.0375392Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T10:05:47.0375478Z               "line": 250
2026-06-23T10:05:47.0375570Z             },
2026-06-23T10:05:47.0375650Z             {
2026-06-23T10:05:47.0375764Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T10:05:47.0375847Z               "line": 273
2026-06-23T10:05:47.0375932Z             },
2026-06-23T10:05:47.0376017Z             {
2026-06-23T10:05:47.0376142Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T10:05:47.0376228Z               "line": 355
2026-06-23T10:05:47.0376312Z             },
2026-06-23T10:05:47.0376402Z             {
2026-06-23T10:05:47.0376522Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T10:05:47.0376620Z               "line": 392
2026-06-23T10:05:47.0376700Z             },
2026-06-23T10:05:47.0376786Z             {
2026-06-23T10:05:47.0376916Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-23T10:05:47.0377010Z               "line": 131
2026-06-23T10:05:47.0377091Z             },
2026-06-23T10:05:47.0377173Z             {
2026-06-23T10:05:47.0377306Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-23T10:05:47.0377391Z               "line": 72
2026-06-23T10:05:47.0377469Z             },
2026-06-23T10:05:47.0377550Z             {
2026-06-23T10:05:47.0377663Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-23T10:05:47.0377755Z               "line": 97
2026-06-23T10:05:47.0377835Z             },
2026-06-23T10:05:47.0377916Z             {
2026-06-23T10:05:47.0378026Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T10:05:47.0378122Z               "line": 379
2026-06-23T10:05:47.0378212Z             },
2026-06-23T10:05:47.0378293Z             {
2026-06-23T10:05:47.0378414Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T10:05:47.0378493Z               "line": 417
2026-06-23T10:05:47.0378579Z             },
2026-06-23T10:05:47.0378665Z             {
2026-06-23T10:05:47.0378771Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T10:05:47.0378865Z               "line": 433
2026-06-23T10:05:47.0379019Z             },
2026-06-23T10:05:47.0379105Z             {
2026-06-23T10:05:47.0379208Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T10:05:47.0379307Z               "line": 472
2026-06-23T10:05:47.0379389Z             },
2026-06-23T10:05:47.0379476Z             {
2026-06-23T10:05:47.0379583Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T10:05:47.0379670Z               "line": 489
2026-06-23T10:05:47.0379752Z             },
2026-06-23T10:05:47.0379837Z             {
2026-06-23T10:05:47.0379941Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T10:05:47.0380033Z               "line": 517
2026-06-23T10:05:47.0380114Z             },
2026-06-23T10:05:47.0380194Z             {
2026-06-23T10:05:47.0380299Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T10:05:47.0380390Z               "line": 548
2026-06-23T10:05:47.0380471Z             },
2026-06-23T10:05:47.0380556Z             {
2026-06-23T10:05:47.0380776Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.0380866Z               "line": 745
2026-06-23T10:05:47.0380944Z             }
2026-06-23T10:05:47.0381025Z           ]
2026-06-23T10:05:47.0381105Z         }
2026-06-23T10:05:47.0381181Z       }
2026-06-23T10:05:47.0381273Z     },
2026-06-23T10:05:47.0381359Z     {
2026-06-23T10:05:47.0381448Z       "id": "REQ-NOTIF-2",
2026-06-23T10:05:47.0381704Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-23T10:05:47.0381807Z       "requiredStages": [
2026-06-23T10:05:47.0382013Z         "doc",
2026-06-23T10:05:47.0382098Z         "impl",
2026-06-23T10:05:47.0382184Z         "unit",
2026-06-23T10:05:47.0382265Z         "int"
2026-06-23T10:05:47.0382351Z       ],
2026-06-23T10:05:47.0382437Z       "stages": {
2026-06-23T10:05:47.0382518Z         "doc": {
2026-06-23T10:05:47.0382610Z           "complete": true,
2026-06-23T10:05:47.0382690Z           "evidence": [
2026-06-23T10:05:47.0382784Z             {
2026-06-23T10:05:47.0382881Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0382962Z               "line": 522
2026-06-23T10:05:47.0383048Z             },
2026-06-23T10:05:47.0383128Z             {
2026-06-23T10:05:47.0383234Z               "path": "docs/MANIFEST.md",
2026-06-23T10:05:47.0383314Z               "line": 131
2026-06-23T10:05:47.0383400Z             }
2026-06-23T10:05:47.0383481Z           ]
2026-06-23T10:05:47.0383568Z         },
2026-06-23T10:05:47.0383657Z         "impl": {
2026-06-23T10:05:47.0383743Z           "complete": true,
2026-06-23T10:05:47.0383849Z           "evidence": [
2026-06-23T10:05:47.0383930Z             {
2026-06-23T10:05:47.0384044Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0384131Z               "line": 287
2026-06-23T10:05:47.0384217Z             },
2026-06-23T10:05:47.0384301Z             {
2026-06-23T10:05:47.0384414Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0384510Z               "line": 301
2026-06-23T10:05:47.0384595Z             },
2026-06-23T10:05:47.0384684Z             {
2026-06-23T10:05:47.0384794Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0384880Z               "line": 326
2026-06-23T10:05:47.0384966Z             },
2026-06-23T10:05:47.0385051Z             {
2026-06-23T10:05:47.0385176Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0385257Z               "line": 239
2026-06-23T10:05:47.0385347Z             },
2026-06-23T10:05:47.0385429Z             {
2026-06-23T10:05:47.0385557Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.0385642Z               "line": 95
2026-06-23T10:05:47.0385724Z             },
2026-06-23T10:05:47.0385806Z             {
2026-06-23T10:05:47.0385910Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0386000Z               "line": 2579
2026-06-23T10:05:47.0386082Z             },
2026-06-23T10:05:47.0386177Z             {
2026-06-23T10:05:47.0386286Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0386383Z               "line": 2628
2026-06-23T10:05:47.0386469Z             },
2026-06-23T10:05:47.0386553Z             {
2026-06-23T10:05:47.0386658Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0386741Z               "line": 2707
2026-06-23T10:05:47.0386830Z             },
2026-06-23T10:05:47.0386920Z             {
2026-06-23T10:05:47.0387015Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0387110Z               "line": 2746
2026-06-23T10:05:47.0387194Z             }
2026-06-23T10:05:47.0387288Z           ]
2026-06-23T10:05:47.0387375Z         },
2026-06-23T10:05:47.0387471Z         "int": {
2026-06-23T10:05:47.0387565Z           "complete": true,
2026-06-23T10:05:47.0387652Z           "evidence": [
2026-06-23T10:05:47.0387738Z             {
2026-06-23T10:05:47.0387856Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0388025Z               "line": 812
2026-06-23T10:05:47.0388110Z             },
2026-06-23T10:05:47.0388190Z             {
2026-06-23T10:05:47.0388320Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0388405Z               "line": 1347
2026-06-23T10:05:47.0388486Z             }
2026-06-23T10:05:47.0388571Z           ]
2026-06-23T10:05:47.0388659Z         },
2026-06-23T10:05:47.0388739Z         "unit": {
2026-06-23T10:05:47.0388834Z           "complete": true,
2026-06-23T10:05:47.0388930Z           "evidence": [
2026-06-23T10:05:47.0389091Z             {
2026-06-23T10:05:47.0389197Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0389420Z               "line": 1022
2026-06-23T10:05:47.0389507Z             },
2026-06-23T10:05:47.0389588Z             {
2026-06-23T10:05:47.0389697Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0389792Z               "line": 1090
2026-06-23T10:05:47.0389877Z             },
2026-06-23T10:05:47.0389968Z             {
2026-06-23T10:05:47.0390073Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0390158Z               "line": 9606
2026-06-23T10:05:47.0390245Z             },
2026-06-23T10:05:47.0390331Z             {
2026-06-23T10:05:47.0390440Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0390535Z               "line": 9661
2026-06-23T10:05:47.0390617Z             }
2026-06-23T10:05:47.0390703Z           ]
2026-06-23T10:05:47.0390792Z         }
2026-06-23T10:05:47.0390874Z       }
2026-06-23T10:05:47.0390955Z     },
2026-06-23T10:05:47.0391041Z     {
2026-06-23T10:05:47.0391136Z       "id": "REQ-PAIR-1",
2026-06-23T10:05:47.0391247Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-23T10:05:47.0391332Z       "requiredStages": [
2026-06-23T10:05:47.0391418Z         "impl",
2026-06-23T10:05:47.0391504Z         "unit",
2026-06-23T10:05:47.0391590Z         "int"
2026-06-23T10:05:47.0391665Z       ],
2026-06-23T10:05:47.0391746Z       "stages": {
2026-06-23T10:05:47.0391823Z         "doc": {
2026-06-23T10:05:47.0391909Z           "complete": false,
2026-06-23T10:05:47.0392004Z           "evidence": []
2026-06-23T10:05:47.0392094Z         },
2026-06-23T10:05:47.0392175Z         "impl": {
2026-06-23T10:05:47.0392264Z           "complete": true,
2026-06-23T10:05:47.0392344Z           "evidence": [
2026-06-23T10:05:47.0392434Z             {
2026-06-23T10:05:47.0392564Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T10:05:47.0392659Z               "line": 27
2026-06-23T10:05:47.0392744Z             },
2026-06-23T10:05:47.0392830Z             {
2026-06-23T10:05:47.0392964Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T10:05:47.0393049Z               "line": 88
2026-06-23T10:05:47.0393141Z             },
2026-06-23T10:05:47.0393222Z             {
2026-06-23T10:05:47.0393344Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T10:05:47.0393432Z               "line": 110
2026-06-23T10:05:47.0393527Z             },
2026-06-23T10:05:47.0393612Z             {
2026-06-23T10:05:47.0393731Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T10:05:47.0393828Z               "line": 153
2026-06-23T10:05:47.0393913Z             },
2026-06-23T10:05:47.0393998Z             {
2026-06-23T10:05:47.0394119Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T10:05:47.0394204Z               "line": 182
2026-06-23T10:05:47.0394289Z             },
2026-06-23T10:05:47.0394371Z             {
2026-06-23T10:05:47.0394504Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-23T10:05:47.0394595Z               "line": 29
2026-06-23T10:05:47.0394686Z             },
2026-06-23T10:05:47.0394772Z             {
2026-06-23T10:05:47.0394898Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T10:05:47.0394989Z               "line": 31
2026-06-23T10:05:47.0395075Z             },
2026-06-23T10:05:47.0395164Z             {
2026-06-23T10:05:47.0395392Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T10:05:47.0395479Z               "line": 44
2026-06-23T10:05:47.0395563Z             },
2026-06-23T10:05:47.0395644Z             {
2026-06-23T10:05:47.0395774Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T10:05:47.0395855Z               "line": 171
2026-06-23T10:05:47.0395935Z             },
2026-06-23T10:05:47.0396022Z             {
2026-06-23T10:05:47.0396147Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T10:05:47.0396245Z               "line": 376
2026-06-23T10:05:47.0396413Z             }
2026-06-23T10:05:47.0396503Z           ]
2026-06-23T10:05:47.0396575Z         },
2026-06-23T10:05:47.0396662Z         "int": {
2026-06-23T10:05:47.0396742Z           "complete": true,
2026-06-23T10:05:47.0396837Z           "evidence": [
2026-06-23T10:05:47.0396918Z             {
2026-06-23T10:05:47.0397043Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0397132Z               "line": 647
2026-06-23T10:05:47.0397219Z             },
2026-06-23T10:05:47.0397301Z             {
2026-06-23T10:05:47.0397413Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0397508Z               "line": 889
2026-06-23T10:05:47.0397599Z             }
2026-06-23T10:05:47.0397684Z           ]
2026-06-23T10:05:47.0397768Z         },
2026-06-23T10:05:47.0397858Z         "unit": {
2026-06-23T10:05:47.0397954Z           "complete": true,
2026-06-23T10:05:47.0398036Z           "evidence": [
2026-06-23T10:05:47.0398125Z             {
2026-06-23T10:05:47.0398255Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T10:05:47.0398345Z               "line": 236
2026-06-23T10:05:47.0398430Z             },
2026-06-23T10:05:47.0398516Z             {
2026-06-23T10:05:47.0398646Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T10:05:47.0398727Z               "line": 349
2026-06-23T10:05:47.0398822Z             },
2026-06-23T10:05:47.0398914Z             {
2026-06-23T10:05:47.0399113Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-23T10:05:47.0399199Z               "line": 194
2026-06-23T10:05:47.0399285Z             },
2026-06-23T10:05:47.0399370Z             {
2026-06-23T10:05:47.0399495Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-23T10:05:47.0399576Z               "line": 216
2026-06-23T10:05:47.0399661Z             },
2026-06-23T10:05:47.0399747Z             {
2026-06-23T10:05:47.0399873Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-23T10:05:47.0399966Z               "line": 230
2026-06-23T10:05:47.0400038Z             },
2026-06-23T10:05:47.0400120Z             {
2026-06-23T10:05:47.0400243Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-23T10:05:47.0400333Z               "line": 242
2026-06-23T10:05:47.0400408Z             },
2026-06-23T10:05:47.0400495Z             {
2026-06-23T10:05:47.0400614Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-23T10:05:47.0400714Z               "line": 256
2026-06-23T10:05:47.0400805Z             },
2026-06-23T10:05:47.0400886Z             {
2026-06-23T10:05:47.0401014Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-23T10:05:47.0401096Z               "line": 270
2026-06-23T10:05:47.0401182Z             },
2026-06-23T10:05:47.0401253Z             {
2026-06-23T10:05:47.0401386Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-23T10:05:47.0401473Z               "line": 277
2026-06-23T10:05:47.0401558Z             },
2026-06-23T10:05:47.0401648Z             {
2026-06-23T10:05:47.0401774Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-23T10:05:47.0401863Z               "line": 295
2026-06-23T10:05:47.0401944Z             },
2026-06-23T10:05:47.0402025Z             {
2026-06-23T10:05:47.0402154Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T10:05:47.0402330Z               "line": 968
2026-06-23T10:05:47.0402423Z             },
2026-06-23T10:05:47.0402503Z             {
2026-06-23T10:05:47.0402634Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T10:05:47.0402720Z               "line": 1051
2026-06-23T10:05:47.0402810Z             },
2026-06-23T10:05:47.0402895Z             {
2026-06-23T10:05:47.0403018Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T10:05:47.0403105Z               "line": 1121
2026-06-23T10:05:47.0403190Z             },
2026-06-23T10:05:47.0403270Z             {
2026-06-23T10:05:47.0403395Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T10:05:47.0403595Z               "line": 1182
2026-06-23T10:05:47.0403687Z             },
2026-06-23T10:05:47.0403768Z             {
2026-06-23T10:05:47.0403896Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T10:05:47.0403982Z               "line": 1238
2026-06-23T10:05:47.0404068Z             },
2026-06-23T10:05:47.0404163Z             {
2026-06-23T10:05:47.0404287Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T10:05:47.0404368Z               "line": 1457
2026-06-23T10:05:47.0404454Z             }
2026-06-23T10:05:47.0404544Z           ]
2026-06-23T10:05:47.0404626Z         }
2026-06-23T10:05:47.0404707Z       }
2026-06-23T10:05:47.0404797Z     },
2026-06-23T10:05:47.0404878Z     {
2026-06-23T10:05:47.0404975Z       "id": "REQ-PAIR-2",
2026-06-23T10:05:47.0405111Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-23T10:05:47.0405212Z       "requiredStages": [],
2026-06-23T10:05:47.0405299Z       "stages": {
2026-06-23T10:05:47.0405384Z         "doc": {
2026-06-23T10:05:47.0405468Z           "complete": false,
2026-06-23T10:05:47.0405554Z           "evidence": []
2026-06-23T10:05:47.0405644Z         },
2026-06-23T10:05:47.0405729Z         "impl": {
2026-06-23T10:05:47.0405823Z           "complete": false,
2026-06-23T10:05:47.0405910Z           "evidence": []
2026-06-23T10:05:47.0406001Z         },
2026-06-23T10:05:47.0406086Z         "int": {
2026-06-23T10:05:47.0406176Z           "complete": false,
2026-06-23T10:05:47.0406258Z           "evidence": []
2026-06-23T10:05:47.0406344Z         },
2026-06-23T10:05:47.0406424Z         "unit": {
2026-06-23T10:05:47.0406515Z           "complete": false,
2026-06-23T10:05:47.0406611Z           "evidence": []
2026-06-23T10:05:47.0406692Z         }
2026-06-23T10:05:47.0406777Z       }
2026-06-23T10:05:47.0406853Z     },
2026-06-23T10:05:47.0406931Z     {
2026-06-23T10:05:47.0407035Z       "id": "REQ-PAIR-3",
2026-06-23T10:05:47.0407188Z       "title": "Fetch current pairing code from any paired node",
2026-06-23T10:05:47.0407279Z       "requiredStages": [
2026-06-23T10:05:47.0407368Z         "impl",
2026-06-23T10:05:47.0407454Z         "unit"
2026-06-23T10:05:47.0407541Z       ],
2026-06-23T10:05:47.0407627Z       "stages": {
2026-06-23T10:05:47.0407712Z         "doc": {
2026-06-23T10:05:47.0407798Z           "complete": false,
2026-06-23T10:05:47.0407899Z           "evidence": []
2026-06-23T10:05:47.0407979Z         },
2026-06-23T10:05:47.0408069Z         "impl": {
2026-06-23T10:05:47.0408164Z           "complete": true,
2026-06-23T10:05:47.0408249Z           "evidence": [
2026-06-23T10:05:47.0408338Z             {
2026-06-23T10:05:47.0408442Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0408539Z               "line": 3914
2026-06-23T10:05:47.0408615Z             },
2026-06-23T10:05:47.0408695Z             {
2026-06-23T10:05:47.0408796Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0408882Z               "line": 3983
2026-06-23T10:05:47.0409034Z             },
2026-06-23T10:05:47.0409116Z             {
2026-06-23T10:05:47.0409220Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0409310Z               "line": 4364
2026-06-23T10:05:47.0409396Z             },
2026-06-23T10:05:47.0409478Z             {
2026-06-23T10:05:47.0409577Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0409774Z               "line": 5616
2026-06-23T10:05:47.0409859Z             }
2026-06-23T10:05:47.0409945Z           ]
2026-06-23T10:05:47.0410030Z         },
2026-06-23T10:05:47.0410118Z         "int": {
2026-06-23T10:05:47.0410207Z           "complete": false,
2026-06-23T10:05:47.0410288Z           "evidence": []
2026-06-23T10:05:47.0410370Z         },
2026-06-23T10:05:47.0410461Z         "unit": {
2026-06-23T10:05:47.0410545Z           "complete": true,
2026-06-23T10:05:47.0410631Z           "evidence": [
2026-06-23T10:05:47.0410718Z             {
2026-06-23T10:05:47.0410822Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0411022Z               "line": 11502
2026-06-23T10:05:47.0411108Z             },
2026-06-23T10:05:47.0411184Z             {
2026-06-23T10:05:47.0411293Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0411374Z               "line": 11717
2026-06-23T10:05:47.0411460Z             },
2026-06-23T10:05:47.0411541Z             {
2026-06-23T10:05:47.0411651Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0411737Z               "line": 12376
2026-06-23T10:05:47.0411823Z             },
2026-06-23T10:05:47.0411908Z             {
2026-06-23T10:05:47.0412014Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0412104Z               "line": 12395
2026-06-23T10:05:47.0412189Z             },
2026-06-23T10:05:47.0412270Z             {
2026-06-23T10:05:47.0412376Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0412466Z               "line": 12419
2026-06-23T10:05:47.0412552Z             },
2026-06-23T10:05:47.0412653Z             {
2026-06-23T10:05:47.0412752Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0412852Z               "line": 12438
2026-06-23T10:05:47.0412924Z             },
2026-06-23T10:05:47.0413011Z             {
2026-06-23T10:05:47.0413105Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0413199Z               "line": 12451
2026-06-23T10:05:47.0413290Z             },
2026-06-23T10:05:47.0413375Z             {
2026-06-23T10:05:47.0413479Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0413569Z               "line": 12460
2026-06-23T10:05:47.0413650Z             }
2026-06-23T10:05:47.0413732Z           ]
2026-06-23T10:05:47.0413817Z         }
2026-06-23T10:05:47.0413898Z       }
2026-06-23T10:05:47.0413985Z     },
2026-06-23T10:05:47.0414070Z     {
2026-06-23T10:05:47.0414155Z       "id": "REQ-PAIR-4",
2026-06-23T10:05:47.0414275Z       "title": "Subnet naming on first pairing",
2026-06-23T10:05:47.0414352Z       "requiredStages": [
2026-06-23T10:05:47.0414446Z         "impl",
2026-06-23T10:05:47.0414523Z         "unit"
2026-06-23T10:05:47.0414609Z       ],
2026-06-23T10:05:47.0414695Z       "stages": {
2026-06-23T10:05:47.0414775Z         "doc": {
2026-06-23T10:05:47.0414871Z           "complete": false,
2026-06-23T10:05:47.0414948Z           "evidence": []
2026-06-23T10:05:47.0415033Z         },
2026-06-23T10:05:47.0415137Z         "impl": {
2026-06-23T10:05:47.0415225Z           "complete": true,
2026-06-23T10:05:47.0415309Z           "evidence": [
2026-06-23T10:05:47.0415396Z             {
2026-06-23T10:05:47.0415521Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T10:05:47.0415601Z               "line": 174
2026-06-23T10:05:47.0415686Z             }
2026-06-23T10:05:47.0415772Z           ]
2026-06-23T10:05:47.0415855Z         },
2026-06-23T10:05:47.0415944Z         "int": {
2026-06-23T10:05:47.0416038Z           "complete": false,
2026-06-23T10:05:47.0416133Z           "evidence": []
2026-06-23T10:05:47.0416224Z         },
2026-06-23T10:05:47.0416312Z         "unit": {
2026-06-23T10:05:47.0416407Z           "complete": true,
2026-06-23T10:05:47.0416489Z           "evidence": [
2026-06-23T10:05:47.0416575Z             {
2026-06-23T10:05:47.0416689Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T10:05:47.0416774Z               "line": 1294
2026-06-23T10:05:47.0416857Z             }
2026-06-23T10:05:47.0417013Z           ]
2026-06-23T10:05:47.0417094Z         }
2026-06-23T10:05:47.0417176Z       }
2026-06-23T10:05:47.0417267Z     },
2026-06-23T10:05:47.0417351Z     {
2026-06-23T10:05:47.0417453Z       "id": "REQ-PAIR-5",
2026-06-23T10:05:47.0417748Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-23T10:05:47.0417848Z       "requiredStages": [
2026-06-23T10:05:47.0417938Z         "impl",
2026-06-23T10:05:47.0418019Z         "unit",
2026-06-23T10:05:47.0418101Z         "int"
2026-06-23T10:05:47.0418182Z       ],
2026-06-23T10:05:47.0418344Z       "stages": {
2026-06-23T10:05:47.0418430Z         "doc": {
2026-06-23T10:05:47.0418530Z           "complete": false,
2026-06-23T10:05:47.0418619Z           "evidence": []
2026-06-23T10:05:47.0418700Z         },
2026-06-23T10:05:47.0418786Z         "impl": {
2026-06-23T10:05:47.0418865Z           "complete": true,
2026-06-23T10:05:47.0419046Z           "evidence": [
2026-06-23T10:05:47.0419142Z             {
2026-06-23T10:05:47.0419260Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T10:05:47.0419346Z               "line": 44
2026-06-23T10:05:47.0419433Z             },
2026-06-23T10:05:47.0419519Z             {
2026-06-23T10:05:47.0419641Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T10:05:47.0419724Z               "line": 96
2026-06-23T10:05:47.0419804Z             },
2026-06-23T10:05:47.0419889Z             {
2026-06-23T10:05:47.0420014Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T10:05:47.0420114Z               "line": 107
2026-06-23T10:05:47.0420195Z             },
2026-06-23T10:05:47.0420271Z             {
2026-06-23T10:05:47.0420396Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T10:05:47.0420482Z               "line": 124
2026-06-23T10:05:47.0420572Z             },
2026-06-23T10:05:47.0420658Z             {
2026-06-23T10:05:47.0420781Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T10:05:47.0420872Z               "line": 155
2026-06-23T10:05:47.0420959Z             },
2026-06-23T10:05:47.0421040Z             {
2026-06-23T10:05:47.0421163Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T10:05:47.0421255Z               "line": 195
2026-06-23T10:05:47.0421341Z             },
2026-06-23T10:05:47.0421425Z             {
2026-06-23T10:05:47.0421547Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T10:05:47.0421639Z               "line": 251
2026-06-23T10:05:47.0421726Z             },
2026-06-23T10:05:47.0421815Z             {
2026-06-23T10:05:47.0421964Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-23T10:05:47.0422050Z               "line": 33
2026-06-23T10:05:47.0422134Z             },
2026-06-23T10:05:47.0422216Z             {
2026-06-23T10:05:47.0422349Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-23T10:05:47.0422444Z               "line": 45
2026-06-23T10:05:47.0422521Z             },
2026-06-23T10:05:47.0422608Z             {
2026-06-23T10:05:47.0422745Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-23T10:05:47.0422830Z               "line": 59
2026-06-23T10:05:47.0422918Z             },
2026-06-23T10:05:47.0423002Z             {
2026-06-23T10:05:47.0423126Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T10:05:47.0423218Z               "line": 376
2026-06-23T10:05:47.0423294Z             }
2026-06-23T10:05:47.0423369Z           ]
2026-06-23T10:05:47.0423456Z         },
2026-06-23T10:05:47.0423552Z         "int": {
2026-06-23T10:05:47.0423641Z           "complete": true,
2026-06-23T10:05:47.0423731Z           "evidence": [
2026-06-23T10:05:47.0423817Z             {
2026-06-23T10:05:47.0423940Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0424034Z               "line": 889
2026-06-23T10:05:47.0424119Z             },
2026-06-23T10:05:47.0424306Z             {
2026-06-23T10:05:47.0424429Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T10:05:47.0424526Z               "line": 342
2026-06-23T10:05:47.0424607Z             }
2026-06-23T10:05:47.0424692Z           ]
2026-06-23T10:05:47.0424778Z         },
2026-06-23T10:05:47.0424864Z         "unit": {
2026-06-23T10:05:47.0424963Z           "complete": true,
2026-06-23T10:05:47.0425040Z           "evidence": [
2026-06-23T10:05:47.0425127Z             {
2026-06-23T10:05:47.0425245Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T10:05:47.0425436Z               "line": 293
2026-06-23T10:05:47.0425522Z             },
2026-06-23T10:05:47.0425607Z             {
2026-06-23T10:05:47.0425732Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T10:05:47.0425813Z               "line": 304
2026-06-23T10:05:47.0425903Z             },
2026-06-23T10:05:47.0425989Z             {
2026-06-23T10:05:47.0426110Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T10:05:47.0426203Z               "line": 406
2026-06-23T10:05:47.0426289Z             },
2026-06-23T10:05:47.0426376Z             {
2026-06-23T10:05:47.0426509Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-23T10:05:47.0426608Z               "line": 72
2026-06-23T10:05:47.0426698Z             },
2026-06-23T10:05:47.0426779Z             {
2026-06-23T10:05:47.0426920Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-23T10:05:47.0427011Z               "line": 82
2026-06-23T10:05:47.0427097Z             },
2026-06-23T10:05:47.0427183Z             {
2026-06-23T10:05:47.0427325Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-23T10:05:47.0427407Z               "line": 100
2026-06-23T10:05:47.0427493Z             },
2026-06-23T10:05:47.0427578Z             {
2026-06-23T10:05:47.0427708Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-23T10:05:47.0427798Z               "line": 110
2026-06-23T10:05:47.0427883Z             },
2026-06-23T10:05:47.0427965Z             {
2026-06-23T10:05:47.0428107Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-23T10:05:47.0428198Z               "line": 125
2026-06-23T10:05:47.0428274Z             },
2026-06-23T10:05:47.0428356Z             {
2026-06-23T10:05:47.0428479Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T10:05:47.0428574Z               "line": 1044
2026-06-23T10:05:47.0428662Z             },
2026-06-23T10:05:47.0431257Z             {
2026-06-23T10:05:47.0431456Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T10:05:47.0431543Z               "line": 1110
2026-06-23T10:05:47.0431619Z             },
2026-06-23T10:05:47.0431704Z             {
2026-06-23T10:05:47.0431844Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T10:05:47.0431929Z               "line": 1357
2026-06-23T10:05:47.0432013Z             }
2026-06-23T10:05:47.0432103Z           ]
2026-06-23T10:05:47.0432189Z         }
2026-06-23T10:05:47.0432277Z       }
2026-06-23T10:05:47.0432365Z     },
2026-06-23T10:05:47.0432446Z     {
2026-06-23T10:05:47.0432543Z       "id": "REQ-PAIR-6",
2026-06-23T10:05:47.0432800Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-23T10:05:47.0432900Z       "requiredStages": [
2026-06-23T10:05:47.0432990Z         "impl",
2026-06-23T10:05:47.0433071Z         "unit"
2026-06-23T10:05:47.0433158Z       ],
2026-06-23T10:05:47.0433248Z       "stages": {
2026-06-23T10:05:47.0433333Z         "doc": {
2026-06-23T10:05:47.0433430Z           "complete": false,
2026-06-23T10:05:47.0433516Z           "evidence": []
2026-06-23T10:05:47.0433606Z         },
2026-06-23T10:05:47.0433686Z         "impl": {
2026-06-23T10:05:47.0433793Z           "complete": true,
2026-06-23T10:05:47.0433886Z           "evidence": [
2026-06-23T10:05:47.0433968Z             {
2026-06-23T10:05:47.0434220Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0434310Z               "line": 3983
2026-06-23T10:05:47.0434396Z             },
2026-06-23T10:05:47.0434477Z             {
2026-06-23T10:05:47.0434584Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0434679Z               "line": 4364
2026-06-23T10:05:47.0434761Z             },
2026-06-23T10:05:47.0434843Z             {
2026-06-23T10:05:47.0434956Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:47.0435042Z               "line": 18
2026-06-23T10:05:47.0435129Z             },
2026-06-23T10:05:47.0435313Z             {
2026-06-23T10:05:47.0435420Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:47.0435505Z               "line": 49
2026-06-23T10:05:47.0435590Z             },
2026-06-23T10:05:47.0435672Z             {
2026-06-23T10:05:47.0435777Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:47.0435862Z               "line": 318
2026-06-23T10:05:47.0435957Z             }
2026-06-23T10:05:47.0436045Z           ]
2026-06-23T10:05:47.0436129Z         },
2026-06-23T10:05:47.0436215Z         "int": {
2026-06-23T10:05:47.0436311Z           "complete": false,
2026-06-23T10:05:47.0436411Z           "evidence": []
2026-06-23T10:05:47.0436496Z         },
2026-06-23T10:05:47.0436587Z         "unit": {
2026-06-23T10:05:47.0436684Z           "complete": true,
2026-06-23T10:05:47.0436777Z           "evidence": [
2026-06-23T10:05:47.0436864Z             {
2026-06-23T10:05:47.0436970Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0437064Z               "line": 12473
2026-06-23T10:05:47.0437159Z             },
2026-06-23T10:05:47.0437249Z             {
2026-06-23T10:05:47.0437353Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0437447Z               "line": 12490
2026-06-23T10:05:47.0437537Z             },
2026-06-23T10:05:47.0437619Z             {
2026-06-23T10:05:47.0437738Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:47.0437837Z               "line": 383
2026-06-23T10:05:47.0437924Z             },
2026-06-23T10:05:47.0438015Z             {
2026-06-23T10:05:47.0438128Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T10:05:47.0438219Z               "line": 392
2026-06-23T10:05:47.0438306Z             }
2026-06-23T10:05:47.0438396Z           ]
2026-06-23T10:05:47.0438481Z         }
2026-06-23T10:05:47.0438568Z       }
2026-06-23T10:05:47.0438658Z     },
2026-06-23T10:05:47.0438744Z     {
2026-06-23T10:05:47.0438844Z       "id": "REQ-PAIR-7",
2026-06-23T10:05:47.0439092Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-23T10:05:47.0439208Z       "requiredStages": [],
2026-06-23T10:05:47.0439293Z       "stages": {
2026-06-23T10:05:47.0439382Z         "doc": {
2026-06-23T10:05:47.0439479Z           "complete": false,
2026-06-23T10:05:47.0439570Z           "evidence": []
2026-06-23T10:05:47.0439654Z         },
2026-06-23T10:05:47.0439744Z         "impl": {
2026-06-23T10:05:47.0439844Z           "complete": false,
2026-06-23T10:05:47.0439934Z           "evidence": []
2026-06-23T10:05:47.0440023Z         },
2026-06-23T10:05:47.0440108Z         "int": {
2026-06-23T10:05:47.0440186Z           "complete": false,
2026-06-23T10:05:47.0440282Z           "evidence": []
2026-06-23T10:05:47.0440366Z         },
2026-06-23T10:05:47.0440447Z         "unit": {
2026-06-23T10:05:47.0440529Z           "complete": false,
2026-06-23T10:05:47.0440615Z           "evidence": []
2026-06-23T10:05:47.0440695Z         }
2026-06-23T10:05:47.0440772Z       }
2026-06-23T10:05:47.0440863Z     },
2026-06-23T10:05:47.0440948Z     {
2026-06-23T10:05:47.0441043Z       "id": "REQ-PAIR-8",
2026-06-23T10:05:47.0442346Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-23T10:05:47.0442587Z       "requiredStages": [
2026-06-23T10:05:47.0442673Z         "impl",
2026-06-23T10:05:47.0442759Z         "unit"
2026-06-23T10:05:47.0442841Z       ],
2026-06-23T10:05:47.0442925Z       "stages": {
2026-06-23T10:05:47.0443011Z         "doc": {
2026-06-23T10:05:47.0443108Z           "complete": false,
2026-06-23T10:05:47.0443194Z           "evidence": []
2026-06-23T10:05:47.0443283Z         },
2026-06-23T10:05:47.0443370Z         "impl": {
2026-06-23T10:05:47.0443569Z           "complete": true,
2026-06-23T10:05:47.0443655Z           "evidence": [
2026-06-23T10:05:47.0443747Z             {
2026-06-23T10:05:47.0443875Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:47.0443965Z               "line": 577
2026-06-23T10:05:47.0444048Z             },
2026-06-23T10:05:47.0444127Z             {
2026-06-23T10:05:47.0444276Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-23T10:05:47.0444362Z               "line": 22
2026-06-23T10:05:47.0444447Z             },
2026-06-23T10:05:47.0444533Z             {
2026-06-23T10:05:47.0444658Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-23T10:05:47.0444752Z               "line": 76
2026-06-23T10:05:47.0444837Z             },
2026-06-23T10:05:47.0444922Z             {
2026-06-23T10:05:47.0445037Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-23T10:05:47.0445130Z               "line": 127
2026-06-23T10:05:47.0445220Z             }
2026-06-23T10:05:47.0445312Z           ]
2026-06-23T10:05:47.0445389Z         },
2026-06-23T10:05:47.0445478Z         "int": {
2026-06-23T10:05:47.0445578Z           "complete": false,
2026-06-23T10:05:47.0445665Z           "evidence": []
2026-06-23T10:05:47.0445746Z         },
2026-06-23T10:05:47.0445845Z         "unit": {
2026-06-23T10:05:47.0445937Z           "complete": true,
2026-06-23T10:05:47.0446036Z           "evidence": [
2026-06-23T10:05:47.0446117Z             {
2026-06-23T10:05:47.0446237Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-23T10:05:47.0446332Z               "line": 183
2026-06-23T10:05:47.0446408Z             },
2026-06-23T10:05:47.0446494Z             {
2026-06-23T10:05:47.0446619Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-23T10:05:47.0446704Z               "line": 195
2026-06-23T10:05:47.0446789Z             },
2026-06-23T10:05:47.0446876Z             {
2026-06-23T10:05:47.0446999Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-23T10:05:47.0447094Z               "line": 211
2026-06-23T10:05:47.0447182Z             },
2026-06-23T10:05:47.0447268Z             {
2026-06-23T10:05:47.0447381Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-23T10:05:47.0447467Z               "line": 227
2026-06-23T10:05:47.0447549Z             }
2026-06-23T10:05:47.0447634Z           ]
2026-06-23T10:05:47.0447719Z         }
2026-06-23T10:05:47.0447804Z       }
2026-06-23T10:05:47.0447881Z     },
2026-06-23T10:05:47.0447969Z     {
2026-06-23T10:05:47.0448054Z       "id": "REQ-PICKER-1",
2026-06-23T10:05:47.0451700Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-23T10:05:47.0451942Z       "requiredStages": [
2026-06-23T10:05:47.0452029Z         "impl",
2026-06-23T10:05:47.0452119Z         "unit"
2026-06-23T10:05:47.0452200Z       ],
2026-06-23T10:05:47.0452382Z       "stages": {
2026-06-23T10:05:47.0452471Z         "doc": {
2026-06-23T10:05:47.0452562Z           "complete": false,
2026-06-23T10:05:47.0452649Z           "evidence": []
2026-06-23T10:05:47.0452739Z         },
2026-06-23T10:05:47.0452824Z         "impl": {
2026-06-23T10:05:47.0452911Z           "complete": true,
2026-06-23T10:05:47.0452997Z           "evidence": [
2026-06-23T10:05:47.0453091Z             {
2026-06-23T10:05:47.0453214Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0453301Z               "line": 248
2026-06-23T10:05:47.0453392Z             },
2026-06-23T10:05:47.0453477Z             {
2026-06-23T10:05:47.0453591Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0453683Z               "line": 280
2026-06-23T10:05:47.0453763Z             }
2026-06-23T10:05:47.0453848Z           ]
2026-06-23T10:05:47.0453931Z         },
2026-06-23T10:05:47.0454021Z         "int": {
2026-06-23T10:05:47.0454115Z           "complete": false,
2026-06-23T10:05:47.0454211Z           "evidence": []
2026-06-23T10:05:47.0454297Z         },
2026-06-23T10:05:47.0454387Z         "unit": {
2026-06-23T10:05:47.0454482Z           "complete": true,
2026-06-23T10:05:47.0454574Z           "evidence": [
2026-06-23T10:05:47.0454650Z             {
2026-06-23T10:05:47.0454764Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:47.0454860Z               "line": 476
2026-06-23T10:05:47.0454946Z             },
2026-06-23T10:05:47.0455035Z             {
2026-06-23T10:05:47.0455155Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0455237Z               "line": 753
2026-06-23T10:05:47.0455322Z             },
2026-06-23T10:05:47.0455407Z             {
2026-06-23T10:05:47.0455521Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0455607Z               "line": 915
2026-06-23T10:05:47.0455695Z             },
2026-06-23T10:05:47.0455776Z             {
2026-06-23T10:05:47.0455881Z               "path": "crates/spt/src/picker/view.rs",
2026-06-23T10:05:47.0455982Z               "line": 474
2026-06-23T10:05:47.0456067Z             }
2026-06-23T10:05:47.0456158Z           ]
2026-06-23T10:05:47.0456239Z         }
2026-06-23T10:05:47.0456330Z       }
2026-06-23T10:05:47.0456420Z     },
2026-06-23T10:05:47.0456497Z     {
2026-06-23T10:05:47.0456596Z       "id": "REQ-PICKER-2",
2026-06-23T10:05:47.0458479Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-23T10:05:47.0458586Z       "requiredStages": [
2026-06-23T10:05:47.0458671Z         "impl",
2026-06-23T10:05:47.0458748Z         "unit"
2026-06-23T10:05:47.0458835Z       ],
2026-06-23T10:05:47.0458919Z       "stages": {
2026-06-23T10:05:47.0459097Z         "doc": {
2026-06-23T10:05:47.0459183Z           "complete": false,
2026-06-23T10:05:47.0459268Z           "evidence": []
2026-06-23T10:05:47.0459493Z         },
2026-06-23T10:05:47.0459577Z         "impl": {
2026-06-23T10:05:47.0459679Z           "complete": true,
2026-06-23T10:05:47.0459773Z           "evidence": [
2026-06-23T10:05:47.0459855Z             {
2026-06-23T10:05:47.0459989Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0460070Z               "line": 183
2026-06-23T10:05:47.0460154Z             },
2026-06-23T10:05:47.0460246Z             {
2026-06-23T10:05:47.0460356Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T10:05:47.0460450Z               "line": 321
2026-06-23T10:05:47.0460619Z             }
2026-06-23T10:05:47.0460700Z           ]
2026-06-23T10:05:47.0460784Z         },
2026-06-23T10:05:47.0460883Z         "int": {
2026-06-23T10:05:47.0460974Z           "complete": false,
2026-06-23T10:05:47.0461063Z           "evidence": []
2026-06-23T10:05:47.0461163Z         },
2026-06-23T10:05:47.0461248Z         "unit": {
2026-06-23T10:05:47.0461339Z           "complete": true,
2026-06-23T10:05:47.0461439Z           "evidence": [
2026-06-23T10:05:47.0461520Z             {
2026-06-23T10:05:47.0461649Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0461735Z               "line": 655
2026-06-23T10:05:47.0461825Z             }
2026-06-23T10:05:47.0461906Z           ]
2026-06-23T10:05:47.0461992Z         }
2026-06-23T10:05:47.0462078Z       }
2026-06-23T10:05:47.0462164Z     },
2026-06-23T10:05:47.0462246Z     {
2026-06-23T10:05:47.0462340Z       "id": "REQ-PICKER-3",
2026-06-23T10:05:47.0464757Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-23T10:05:47.0464876Z       "requiredStages": [
2026-06-23T10:05:47.0464957Z         "impl",
2026-06-23T10:05:47.0465047Z         "unit"
2026-06-23T10:05:47.0465130Z       ],
2026-06-23T10:05:47.0465220Z       "stages": {
2026-06-23T10:05:47.0465305Z         "doc": {
2026-06-23T10:05:47.0465401Z           "complete": false,
2026-06-23T10:05:47.0465492Z           "evidence": []
2026-06-23T10:05:47.0465577Z         },
2026-06-23T10:05:47.0465663Z         "impl": {
2026-06-23T10:05:47.0465754Z           "complete": true,
2026-06-23T10:05:47.0465844Z           "evidence": [
2026-06-23T10:05:47.0465929Z             {
2026-06-23T10:05:47.0466047Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T10:05:47.0466153Z               "line": 124
2026-06-23T10:05:47.0466237Z             }
2026-06-23T10:05:47.0466317Z           ]
2026-06-23T10:05:47.0466399Z         },
2026-06-23T10:05:47.0466490Z         "int": {
2026-06-23T10:05:47.0466575Z           "complete": false,
2026-06-23T10:05:47.0466665Z           "evidence": []
2026-06-23T10:05:47.0466751Z         },
2026-06-23T10:05:47.0466832Z         "unit": {
2026-06-23T10:05:47.0466923Z           "complete": true,
2026-06-23T10:05:47.0467008Z           "evidence": [
2026-06-23T10:05:47.0467086Z             {
2026-06-23T10:05:47.0467204Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T10:05:47.0467289Z               "line": 479
2026-06-23T10:05:47.0467372Z             }
2026-06-23T10:05:47.0467458Z           ]
2026-06-23T10:05:47.0467538Z         }
2026-06-23T10:05:47.0467614Z       }
2026-06-23T10:05:47.0467696Z     },
2026-06-23T10:05:47.0467777Z     {
2026-06-23T10:05:47.0467877Z       "id": "REQ-PICKER-4",
2026-06-23T10:05:47.0469915Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-23T10:05:47.0470123Z       "requiredStages": [
2026-06-23T10:05:47.0470210Z         "impl",
2026-06-23T10:05:47.0470292Z         "unit"
2026-06-23T10:05:47.0470371Z       ],
2026-06-23T10:05:47.0470462Z       "stages": {
2026-06-23T10:05:47.0470544Z         "doc": {
2026-06-23T10:05:47.0470654Z           "complete": false,
2026-06-23T10:05:47.0470729Z           "evidence": []
2026-06-23T10:05:47.0470811Z         },
2026-06-23T10:05:47.0470897Z         "impl": {
2026-06-23T10:05:47.0470978Z           "complete": true,
2026-06-23T10:05:47.0471077Z           "evidence": [
2026-06-23T10:05:47.0471154Z             {
2026-06-23T10:05:47.0471288Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0471382Z               "line": 353
2026-06-23T10:05:47.0471467Z             },
2026-06-23T10:05:47.0471553Z             {
2026-06-23T10:05:47.0471656Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T10:05:47.0471756Z               "line": 105
2026-06-23T10:05:47.0471837Z             }
2026-06-23T10:05:47.0471923Z           ]
2026-06-23T10:05:47.0472004Z         },
2026-06-23T10:05:47.0472094Z         "int": {
2026-06-23T10:05:47.0472186Z           "complete": false,
2026-06-23T10:05:47.0472271Z           "evidence": []
2026-06-23T10:05:47.0472351Z         },
2026-06-23T10:05:47.0472442Z         "unit": {
2026-06-23T10:05:47.0472534Z           "complete": true,
2026-06-23T10:05:47.0472620Z           "evidence": [
2026-06-23T10:05:47.0472709Z             {
2026-06-23T10:05:47.0472839Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0472934Z               "line": 1246
2026-06-23T10:05:47.0473019Z             },
2026-06-23T10:05:47.0473101Z             {
2026-06-23T10:05:47.0473220Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T10:05:47.0473310Z               "line": 537
2026-06-23T10:05:47.0473391Z             }
2026-06-23T10:05:47.0473493Z           ]
2026-06-23T10:05:47.0473572Z         }
2026-06-23T10:05:47.0473649Z       }
2026-06-23T10:05:47.0473726Z     },
2026-06-23T10:05:47.0473817Z     {
2026-06-23T10:05:47.0473906Z       "id": "REQ-PICKER-5",
2026-06-23T10:05:47.0476896Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-23T10:05:47.0477016Z       "requiredStages": [
2026-06-23T10:05:47.0477102Z         "impl",
2026-06-23T10:05:47.0477316Z         "unit"
2026-06-23T10:05:47.0477397Z       ],
2026-06-23T10:05:47.0477478Z       "stages": {
2026-06-23T10:05:47.0477569Z         "doc": {
2026-06-23T10:05:47.0477665Z           "complete": false,
2026-06-23T10:05:47.0477741Z           "evidence": []
2026-06-23T10:05:47.0477826Z         },
2026-06-23T10:05:47.0477903Z         "impl": {
2026-06-23T10:05:47.0477998Z           "complete": true,
2026-06-23T10:05:47.0478084Z           "evidence": [
2026-06-23T10:05:47.0478169Z             {
2026-06-23T10:05:47.0478280Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0478446Z               "line": 2156
2026-06-23T10:05:47.0478523Z             }
2026-06-23T10:05:47.0478604Z           ]
2026-06-23T10:05:47.0478680Z         },
2026-06-23T10:05:47.0478766Z         "int": {
2026-06-23T10:05:47.0478857Z           "complete": false,
2026-06-23T10:05:47.0479037Z           "evidence": []
2026-06-23T10:05:47.0479114Z         },
2026-06-23T10:05:47.0479201Z         "unit": {
2026-06-23T10:05:47.0479286Z           "complete": true,
2026-06-23T10:05:47.0479380Z           "evidence": [
2026-06-23T10:05:47.0479461Z             {
2026-06-23T10:05:47.0479565Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0479650Z               "line": 8903
2026-06-23T10:05:47.0479730Z             }
2026-06-23T10:05:47.0479811Z           ]
2026-06-23T10:05:47.0479883Z         }
2026-06-23T10:05:47.0479965Z       }
2026-06-23T10:05:47.0480049Z     },
2026-06-23T10:05:47.0480135Z     {
2026-06-23T10:05:47.0480255Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-23T10:05:47.0481613Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-23T10:05:47.0481714Z       "requiredStages": [],
2026-06-23T10:05:47.0481791Z       "stages": {
2026-06-23T10:05:47.0481876Z         "doc": {
2026-06-23T10:05:47.0481961Z           "complete": false,
2026-06-23T10:05:47.0482051Z           "evidence": []
2026-06-23T10:05:47.0482142Z         },
2026-06-23T10:05:47.0482212Z         "impl": {
2026-06-23T10:05:47.0482311Z           "complete": false,
2026-06-23T10:05:47.0482397Z           "evidence": []
2026-06-23T10:05:47.0482479Z         },
2026-06-23T10:05:47.0482564Z         "int": {
2026-06-23T10:05:47.0482668Z           "complete": false,
2026-06-23T10:05:47.0482756Z           "evidence": []
2026-06-23T10:05:47.0482841Z         },
2026-06-23T10:05:47.0482926Z         "unit": {
2026-06-23T10:05:47.0483012Z           "complete": false,
2026-06-23T10:05:47.0483104Z           "evidence": []
2026-06-23T10:05:47.0483185Z         }
2026-06-23T10:05:47.0483264Z       }
2026-06-23T10:05:47.0483352Z     },
2026-06-23T10:05:47.0483433Z     {
2026-06-23T10:05:47.0483532Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-23T10:05:47.0484621Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-23T10:05:47.0484720Z       "requiredStages": [
2026-06-23T10:05:47.0484818Z         "impl",
2026-06-23T10:05:47.0484899Z         "unit"
2026-06-23T10:05:47.0484981Z       ],
2026-06-23T10:05:47.0485053Z       "stages": {
2026-06-23T10:05:47.0485138Z         "doc": {
2026-06-23T10:05:47.0485257Z           "complete": false,
2026-06-23T10:05:47.0485348Z           "evidence": []
2026-06-23T10:05:47.0485434Z         },
2026-06-23T10:05:47.0485519Z         "impl": {
2026-06-23T10:05:47.0485725Z           "complete": true,
2026-06-23T10:05:47.0485810Z           "evidence": [
2026-06-23T10:05:47.0485901Z             {
2026-06-23T10:05:47.0486030Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T10:05:47.0486120Z               "line": 300
2026-06-23T10:05:47.0486211Z             }
2026-06-23T10:05:47.0486293Z           ]
2026-06-23T10:05:47.0486378Z         },
2026-06-23T10:05:47.0486463Z         "int": {
2026-06-23T10:05:47.0486555Z           "complete": false,
2026-06-23T10:05:47.0486645Z           "evidence": []
2026-06-23T10:05:47.0486730Z         },
2026-06-23T10:05:47.0486913Z         "unit": {
2026-06-23T10:05:47.0487006Z           "complete": true,
2026-06-23T10:05:47.0487092Z           "evidence": [
2026-06-23T10:05:47.0487177Z             {
2026-06-23T10:05:47.0487287Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T10:05:47.0487376Z               "line": 510
2026-06-23T10:05:47.0487456Z             }
2026-06-23T10:05:47.0487543Z           ]
2026-06-23T10:05:47.0487634Z         }
2026-06-23T10:05:47.0487724Z       }
2026-06-23T10:05:47.0487810Z     },
2026-06-23T10:05:47.0487886Z     {
2026-06-23T10:05:47.0487995Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-23T10:05:47.0489602Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-23T10:05:47.0489708Z       "requiredStages": [
2026-06-23T10:05:47.0489794Z         "impl",
2026-06-23T10:05:47.0489879Z         "unit"
2026-06-23T10:05:47.0489959Z       ],
2026-06-23T10:05:47.0490045Z       "stages": {
2026-06-23T10:05:47.0490140Z         "doc": {
2026-06-23T10:05:47.0490229Z           "complete": false,
2026-06-23T10:05:47.0490314Z           "evidence": []
2026-06-23T10:05:47.0490405Z         },
2026-06-23T10:05:47.0490492Z         "impl": {
2026-06-23T10:05:47.0490628Z           "complete": true,
2026-06-23T10:05:47.0490725Z           "evidence": [
2026-06-23T10:05:47.0490811Z             {
2026-06-23T10:05:47.0490925Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0491015Z               "line": 682
2026-06-23T10:05:47.0491102Z             }
2026-06-23T10:05:47.0491183Z           ]
2026-06-23T10:05:47.0491277Z         },
2026-06-23T10:05:47.0491349Z         "int": {
2026-06-23T10:05:47.0491445Z           "complete": false,
2026-06-23T10:05:47.0491531Z           "evidence": []
2026-06-23T10:05:47.0491616Z         },
2026-06-23T10:05:47.0491731Z         "unit": {
2026-06-23T10:05:47.0491821Z           "complete": true,
2026-06-23T10:05:47.0491916Z           "evidence": [
2026-06-23T10:05:47.0492004Z             {
2026-06-23T10:05:47.0492178Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0492265Z               "line": 1145
2026-06-23T10:05:47.0492356Z             },
2026-06-23T10:05:47.0492441Z             {
2026-06-23T10:05:47.0492554Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0492645Z               "line": 1159
2026-06-23T10:05:47.0492726Z             }
2026-06-23T10:05:47.0492805Z           ]
2026-06-23T10:05:47.0492890Z         }
2026-06-23T10:05:47.0492972Z       }
2026-06-23T10:05:47.0493058Z     },
2026-06-23T10:05:47.0493148Z     {
2026-06-23T10:05:47.0493257Z       "id": "REQ-PICKER-UX-V013",
2026-06-23T10:05:47.0494812Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-23T10:05:47.0495060Z       "requiredStages": [],
2026-06-23T10:05:47.0495190Z       "stages": {
2026-06-23T10:05:47.0495267Z         "doc": {
2026-06-23T10:05:47.0495355Z           "complete": false,
2026-06-23T10:05:47.0495454Z           "evidence": []
2026-06-23T10:05:47.0495531Z         },
2026-06-23T10:05:47.0495628Z         "impl": {
2026-06-23T10:05:47.0495822Z           "complete": false,
2026-06-23T10:05:47.0495918Z           "evidence": []
2026-06-23T10:05:47.0496008Z         },
2026-06-23T10:05:47.0496103Z         "int": {
2026-06-23T10:05:47.0496200Z           "complete": false,
2026-06-23T10:05:47.0496290Z           "evidence": []
2026-06-23T10:05:47.0496375Z         },
2026-06-23T10:05:47.0496456Z         "unit": {
2026-06-23T10:05:47.0496561Z           "complete": false,
2026-06-23T10:05:47.0496643Z           "evidence": []
2026-06-23T10:05:47.0496737Z         }
2026-06-23T10:05:47.0496819Z       }
2026-06-23T10:05:47.0496900Z     },
2026-06-23T10:05:47.0496990Z     {
2026-06-23T10:05:47.0497076Z       "id": "REQ-PRES-1",
2026-06-23T10:05:47.0498389Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-23T10:05:47.0498504Z       "requiredStages": [
2026-06-23T10:05:47.0498589Z         "impl",
2026-06-23T10:05:47.0498674Z         "unit",
2026-06-23T10:05:47.0498757Z         "int"
2026-06-23T10:05:47.0498847Z       ],
2026-06-23T10:05:47.0498932Z       "stages": {
2026-06-23T10:05:47.0499138Z         "doc": {
2026-06-23T10:05:47.0499233Z           "complete": true,
2026-06-23T10:05:47.0499318Z           "evidence": [
2026-06-23T10:05:47.0499405Z             {
2026-06-23T10:05:47.0499505Z               "path": "docs/DEFERRED.md",
2026-06-23T10:05:47.0499590Z               "line": 11
2026-06-23T10:05:47.0499677Z             }
2026-06-23T10:05:47.0499758Z           ]
2026-06-23T10:05:47.0499848Z         },
2026-06-23T10:05:47.0499929Z         "impl": {
2026-06-23T10:05:47.0500026Z           "complete": true,
2026-06-23T10:05:47.0500110Z           "evidence": [
2026-06-23T10:05:47.0500206Z             {
2026-06-23T10:05:47.0500336Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T10:05:47.0500430Z               "line": 515
2026-06-23T10:05:47.0500524Z             },
2026-06-23T10:05:47.0500610Z             {
2026-06-23T10:05:47.0500737Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T10:05:47.0500827Z               "line": 567
2026-06-23T10:05:47.0500912Z             },
2026-06-23T10:05:47.0500999Z             {
2026-06-23T10:05:47.0501122Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0501212Z               "line": 188
2026-06-23T10:05:47.0501300Z             },
2026-06-23T10:05:47.0501385Z             {
2026-06-23T10:05:47.0501494Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0501580Z               "line": 214
2026-06-23T10:05:47.0501667Z             },
2026-06-23T10:05:47.0501757Z             {
2026-06-23T10:05:47.0501881Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-23T10:05:47.0501967Z               "line": 28
2026-06-23T10:05:47.0502052Z             },
2026-06-23T10:05:47.0502129Z             {
2026-06-23T10:05:47.0502244Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-23T10:05:47.0502334Z               "line": 105
2026-06-23T10:05:47.0502424Z             },
2026-06-23T10:05:47.0502611Z             {
2026-06-23T10:05:47.0502733Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-23T10:05:47.0502820Z               "line": 161
2026-06-23T10:05:47.0502902Z             },
2026-06-23T10:05:47.0502987Z             {
2026-06-23T10:05:47.0503110Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-23T10:05:47.0503191Z               "line": 180
2026-06-23T10:05:47.0503290Z             },
2026-06-23T10:05:47.0503370Z             {
2026-06-23T10:05:47.0503508Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0503590Z               "line": 421
2026-06-23T10:05:47.0503803Z             },
2026-06-23T10:05:47.0503885Z             {
2026-06-23T10:05:47.0504014Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T10:05:47.0504104Z               "line": 289
2026-06-23T10:05:47.0504186Z             },
2026-06-23T10:05:47.0504276Z             {
2026-06-23T10:05:47.0504394Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T10:05:47.0504500Z               "line": 336
2026-06-23T10:05:47.0504581Z             },
2026-06-23T10:05:47.0504658Z             {
2026-06-23T10:05:47.0504781Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T10:05:47.0504868Z               "line": 362
2026-06-23T10:05:47.0504958Z             },
2026-06-23T10:05:47.0505038Z             {
2026-06-23T10:05:47.0505159Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0505244Z               "line": 100
2026-06-23T10:05:47.0505329Z             }
2026-06-23T10:05:47.0505416Z           ]
2026-06-23T10:05:47.0505502Z         },
2026-06-23T10:05:47.0505600Z         "int": {
2026-06-23T10:05:47.0505687Z           "complete": true,
2026-06-23T10:05:47.0505788Z           "evidence": [
2026-06-23T10:05:47.0505873Z             {
2026-06-23T10:05:47.0506000Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T10:05:47.0506096Z               "line": 567
2026-06-23T10:05:47.0506183Z             },
2026-06-23T10:05:47.0506277Z             {
2026-06-23T10:05:47.0506402Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0506497Z               "line": 749
2026-06-23T10:05:47.0506592Z             },
2026-06-23T10:05:47.0506663Z             {
2026-06-23T10:05:47.0506793Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0506883Z               "line": 1167
2026-06-23T10:05:47.0506973Z             }
2026-06-23T10:05:47.0507050Z           ]
2026-06-23T10:05:47.0507136Z         },
2026-06-23T10:05:47.0507226Z         "unit": {
2026-06-23T10:05:47.0507326Z           "complete": true,
2026-06-23T10:05:47.0507413Z           "evidence": [
2026-06-23T10:05:47.0507498Z             {
2026-06-23T10:05:47.0507617Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.0507704Z               "line": 674
2026-06-23T10:05:47.0507798Z             },
2026-06-23T10:05:47.0507884Z             {
2026-06-23T10:05:47.0508000Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-23T10:05:47.0508099Z               "line": 238
2026-06-23T10:05:47.0508179Z             },
2026-06-23T10:05:47.0508269Z             {
2026-06-23T10:05:47.0508389Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-23T10:05:47.0508477Z               "line": 269
2026-06-23T10:05:47.0508567Z             },
2026-06-23T10:05:47.0508639Z             {
2026-06-23T10:05:47.0508764Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-23T10:05:47.0508848Z               "line": 305
2026-06-23T10:05:47.0509035Z             },
2026-06-23T10:05:47.0509125Z             {
2026-06-23T10:05:47.0509244Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-23T10:05:47.0509341Z               "line": 336
2026-06-23T10:05:47.0509422Z             },
2026-06-23T10:05:47.0509511Z             {
2026-06-23T10:05:47.0509641Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0509736Z               "line": 1217
2026-06-23T10:05:47.0509932Z             },
2026-06-23T10:05:47.0510017Z             {
2026-06-23T10:05:47.0510141Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0510232Z               "line": 1163
2026-06-23T10:05:47.0510327Z             }
2026-06-23T10:05:47.0510403Z           ]
2026-06-23T10:05:47.0510494Z         }
2026-06-23T10:05:47.0510576Z       }
2026-06-23T10:05:47.0510661Z     },
2026-06-23T10:05:47.0510742Z     {
2026-06-23T10:05:47.0510828Z       "id": "REQ-RC-1",
2026-06-23T10:05:47.0512809Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-23T10:05:47.0513037Z       "requiredStages": [
2026-06-23T10:05:47.0513119Z         "impl",
2026-06-23T10:05:47.0513209Z         "unit",
2026-06-23T10:05:47.0513294Z         "int"
2026-06-23T10:05:47.0513375Z       ],
2026-06-23T10:05:47.0513467Z       "stages": {
2026-06-23T10:05:47.0513552Z         "doc": {
2026-06-23T10:05:47.0513650Z           "complete": false,
2026-06-23T10:05:47.0513736Z           "evidence": []
2026-06-23T10:05:47.0513822Z         },
2026-06-23T10:05:47.0513911Z         "impl": {
2026-06-23T10:05:47.0514005Z           "complete": true,
2026-06-23T10:05:47.0514102Z           "evidence": [
2026-06-23T10:05:47.0514178Z             {
2026-06-23T10:05:47.0514301Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:47.0518148Z               "line": 1066
2026-06-23T10:05:47.0518288Z             },
2026-06-23T10:05:47.0518368Z             {
2026-06-23T10:05:47.0518502Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:47.0518603Z               "line": 2077
2026-06-23T10:05:47.0518687Z             },
2026-06-23T10:05:47.0518777Z             {
2026-06-23T10:05:47.0518901Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:47.0519099Z               "line": 967
2026-06-23T10:05:47.0519180Z             },
2026-06-23T10:05:47.0519266Z             {
2026-06-23T10:05:47.0519394Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:47.0519495Z               "line": 1001
2026-06-23T10:05:47.0519577Z             },
2026-06-23T10:05:47.0519662Z             {
2026-06-23T10:05:47.0519761Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0519843Z               "line": 22
2026-06-23T10:05:47.0519929Z             },
2026-06-23T10:05:47.0520015Z             {
2026-06-23T10:05:47.0520124Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0520211Z               "line": 738
2026-06-23T10:05:47.0520291Z             }
2026-06-23T10:05:47.0520371Z           ]
2026-06-23T10:05:47.0520458Z         },
2026-06-23T10:05:47.0520549Z         "int": {
2026-06-23T10:05:47.0520640Z           "complete": true,
2026-06-23T10:05:47.0520725Z           "evidence": [
2026-06-23T10:05:47.0520812Z             {
2026-06-23T10:05:47.0520939Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T10:05:47.0521030Z               "line": 263
2026-06-23T10:05:47.0521112Z             },
2026-06-23T10:05:47.0521203Z             {
2026-06-23T10:05:47.0521321Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T10:05:47.0521408Z               "line": 290
2026-06-23T10:05:47.0521499Z             },
2026-06-23T10:05:47.0521582Z             {
2026-06-23T10:05:47.0521701Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T10:05:47.0521792Z               "line": 418
2026-06-23T10:05:47.0522018Z             }
2026-06-23T10:05:47.0522109Z           ]
2026-06-23T10:05:47.0522196Z         },
2026-06-23T10:05:47.0522285Z         "unit": {
2026-06-23T10:05:47.0522376Z           "complete": true,
2026-06-23T10:05:47.0522462Z           "evidence": [
2026-06-23T10:05:47.0522553Z             {
2026-06-23T10:05:47.0522666Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:47.0522763Z               "line": 1327
2026-06-23T10:05:47.0522849Z             },
2026-06-23T10:05:47.0522934Z             {
2026-06-23T10:05:47.0523039Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0523225Z               "line": 1214
2026-06-23T10:05:47.0523315Z             },
2026-06-23T10:05:47.0523398Z             {
2026-06-23T10:05:47.0523506Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0523592Z               "line": 1243
2026-06-23T10:05:47.0523674Z             },
2026-06-23T10:05:47.0523760Z             {
2026-06-23T10:05:47.0523868Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0523955Z               "line": 1256
2026-06-23T10:05:47.0524037Z             }
2026-06-23T10:05:47.0524126Z           ]
2026-06-23T10:05:47.0524202Z         }
2026-06-23T10:05:47.0524287Z       }
2026-06-23T10:05:47.0524368Z     },
2026-06-23T10:05:47.0524457Z     {
2026-06-23T10:05:47.0524570Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-23T10:05:47.0530345Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-23T10:05:47.0530494Z       "requiredStages": [
2026-06-23T10:05:47.0530589Z         "doc",
2026-06-23T10:05:47.0530665Z         "impl",
2026-06-23T10:05:47.0530747Z         "unit"
2026-06-23T10:05:47.0530832Z       ],
2026-06-23T10:05:47.0530922Z       "stages": {
2026-06-23T10:05:47.0530999Z         "doc": {
2026-06-23T10:05:47.0531105Z           "complete": true,
2026-06-23T10:05:47.0531195Z           "evidence": [
2026-06-23T10:05:47.0531280Z             {
2026-06-23T10:05:47.0531381Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0531467Z               "line": 358
2026-06-23T10:05:47.0531552Z             },
2026-06-23T10:05:47.0531629Z             {
2026-06-23T10:05:47.0531852Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:47.0531948Z               "line": 440
2026-06-23T10:05:47.0532030Z             }
2026-06-23T10:05:47.0532120Z           ]
2026-06-23T10:05:47.0532204Z         },
2026-06-23T10:05:47.0532290Z         "impl": {
2026-06-23T10:05:47.0532376Z           "complete": true,
2026-06-23T10:05:47.0532474Z           "evidence": [
2026-06-23T10:05:47.0532559Z             {
2026-06-23T10:05:47.0532665Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0532761Z               "line": 226
2026-06-23T10:05:47.0532845Z             },
2026-06-23T10:05:47.0533037Z             {
2026-06-23T10:05:47.0533132Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0533222Z               "line": 285
2026-06-23T10:05:47.0533304Z             },
2026-06-23T10:05:47.0533389Z             {
2026-06-23T10:05:47.0533498Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0533580Z               "line": 300
2026-06-23T10:05:47.0533671Z             },
2026-06-23T10:05:47.0533752Z             {
2026-06-23T10:05:47.0533842Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0533934Z               "line": 315
2026-06-23T10:05:47.0534019Z             },
2026-06-23T10:05:47.0534104Z             {
2026-06-23T10:05:47.0534205Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0534301Z               "line": 364
2026-06-23T10:05:47.0534390Z             }
2026-06-23T10:05:47.0534472Z           ]
2026-06-23T10:05:47.0534554Z         },
2026-06-23T10:05:47.0534639Z         "int": {
2026-06-23T10:05:47.0534738Z           "complete": false,
2026-06-23T10:05:47.0534842Z           "evidence": []
2026-06-23T10:05:47.0534933Z         },
2026-06-23T10:05:47.0535012Z         "unit": {
2026-06-23T10:05:47.0535112Z           "complete": true,
2026-06-23T10:05:47.0535193Z           "evidence": [
2026-06-23T10:05:47.0535275Z             {
2026-06-23T10:05:47.0535374Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0535469Z               "line": 1271
2026-06-23T10:05:47.0535561Z             },
2026-06-23T10:05:47.0535647Z             {
2026-06-23T10:05:47.0535756Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0535847Z               "line": 1386
2026-06-23T10:05:47.0535928Z             }
2026-06-23T10:05:47.0536018Z           ]
2026-06-23T10:05:47.0536108Z         }
2026-06-23T10:05:47.0536200Z       }
2026-06-23T10:05:47.0536285Z     },
2026-06-23T10:05:47.0536375Z     {
2026-06-23T10:05:47.0536486Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-23T10:05:47.0540778Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-23T10:05:47.0541036Z       "requiredStages": [
2026-06-23T10:05:47.0541125Z         "doc",
2026-06-23T10:05:47.0541210Z         "impl",
2026-06-23T10:05:47.0541293Z         "unit"
2026-06-23T10:05:47.0541383Z       ],
2026-06-23T10:05:47.0541459Z       "stages": {
2026-06-23T10:05:47.0541540Z         "doc": {
2026-06-23T10:05:47.0541636Z           "complete": true,
2026-06-23T10:05:47.0541735Z           "evidence": [
2026-06-23T10:05:47.0541821Z             {
2026-06-23T10:05:47.0541932Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:47.0542145Z               "line": 461
2026-06-23T10:05:47.0542223Z             }
2026-06-23T10:05:47.0542318Z           ]
2026-06-23T10:05:47.0542393Z         },
2026-06-23T10:05:47.0542479Z         "impl": {
2026-06-23T10:05:47.0542567Z           "complete": true,
2026-06-23T10:05:47.0542661Z           "evidence": [
2026-06-23T10:05:47.0542750Z             {
2026-06-23T10:05:47.0542860Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0542955Z               "line": 421
2026-06-23T10:05:47.0543030Z             },
2026-06-23T10:05:47.0543115Z             {
2026-06-23T10:05:47.0543220Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0543306Z               "line": 437
2026-06-23T10:05:47.0543391Z             }
2026-06-23T10:05:47.0543472Z           ]
2026-06-23T10:05:47.0543555Z         },
2026-06-23T10:05:47.0543640Z         "int": {
2026-06-23T10:05:47.0543729Z           "complete": false,
2026-06-23T10:05:47.0543821Z           "evidence": []
2026-06-23T10:05:47.0543908Z         },
2026-06-23T10:05:47.0543998Z         "unit": {
2026-06-23T10:05:47.0544082Z           "complete": true,
2026-06-23T10:05:47.0544169Z           "evidence": [
2026-06-23T10:05:47.0544255Z             {
2026-06-23T10:05:47.0544364Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0544455Z               "line": 1521
2026-06-23T10:05:47.0544542Z             },
2026-06-23T10:05:47.0544626Z             {
2026-06-23T10:05:47.0544727Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0544823Z               "line": 1540
2026-06-23T10:05:47.0544903Z             },
2026-06-23T10:05:47.0544984Z             {
2026-06-23T10:05:47.0545090Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0545176Z               "line": 1552
2026-06-23T10:05:47.0545265Z             },
2026-06-23T10:05:47.0545350Z             {
2026-06-23T10:05:47.0545450Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0545531Z               "line": 1580
2026-06-23T10:05:47.0545624Z             }
2026-06-23T10:05:47.0545709Z           ]
2026-06-23T10:05:47.0545796Z         }
2026-06-23T10:05:47.0545883Z       }
2026-06-23T10:05:47.0545967Z     },
2026-06-23T10:05:47.0546054Z     {
2026-06-23T10:05:47.0546154Z       "id": "REQ-RC-WIN-PASTE",
2026-06-23T10:05:47.0550812Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-23T10:05:47.0551037Z       "requiredStages": [
2026-06-23T10:05:47.0551127Z         "doc",
2026-06-23T10:05:47.0551314Z         "impl",
2026-06-23T10:05:47.0551394Z         "unit"
2026-06-23T10:05:47.0551485Z       ],
2026-06-23T10:05:47.0551581Z       "stages": {
2026-06-23T10:05:47.0551667Z         "doc": {
2026-06-23T10:05:47.0551761Z           "complete": true,
2026-06-23T10:05:47.0551849Z           "evidence": [
2026-06-23T10:05:47.0551934Z             {
2026-06-23T10:05:47.0552043Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T10:05:47.0552148Z               "line": 447
2026-06-23T10:05:47.0552234Z             }
2026-06-23T10:05:47.0552315Z           ]
2026-06-23T10:05:47.0552405Z         },
2026-06-23T10:05:47.0552483Z         "impl": {
2026-06-23T10:05:47.0552582Z           "complete": true,
2026-06-23T10:05:47.0552673Z           "evidence": [
2026-06-23T10:05:47.0552764Z             {
2026-06-23T10:05:47.0552869Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0552958Z               "line": 395
2026-06-23T10:05:47.0553044Z             },
2026-06-23T10:05:47.0553132Z             {
2026-06-23T10:05:47.0553235Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0553324Z               "line": 411
2026-06-23T10:05:47.0553415Z             },
2026-06-23T10:05:47.0553501Z             {
2026-06-23T10:05:47.0553599Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0553684Z               "line": 454
2026-06-23T10:05:47.0553776Z             },
2026-06-23T10:05:47.0553857Z             {
2026-06-23T10:05:47.0553961Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0554037Z               "line": 468
2026-06-23T10:05:47.0554124Z             },
2026-06-23T10:05:47.0554210Z             {
2026-06-23T10:05:47.0554313Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0554396Z               "line": 479
2026-06-23T10:05:47.0554482Z             }
2026-06-23T10:05:47.0554577Z           ]
2026-06-23T10:05:47.0554662Z         },
2026-06-23T10:05:47.0554753Z         "int": {
2026-06-23T10:05:47.0554843Z           "complete": false,
2026-06-23T10:05:47.0554938Z           "evidence": []
2026-06-23T10:05:47.0555020Z         },
2026-06-23T10:05:47.0555106Z         "unit": {
2026-06-23T10:05:47.0555205Z           "complete": true,
2026-06-23T10:05:47.0555292Z           "evidence": [
2026-06-23T10:05:47.0555378Z             {
2026-06-23T10:05:47.0555478Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0555577Z               "line": 1462
2026-06-23T10:05:47.0555660Z             },
2026-06-23T10:05:47.0555750Z             {
2026-06-23T10:05:47.0555853Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0555939Z               "line": 1483
2026-06-23T10:05:47.0556029Z             },
2026-06-23T10:05:47.0556115Z             {
2026-06-23T10:05:47.0556213Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0556304Z               "line": 1504
2026-06-23T10:05:47.0556395Z             }
2026-06-23T10:05:47.0556490Z           ]
2026-06-23T10:05:47.0556575Z         }
2026-06-23T10:05:47.0556667Z       }
2026-06-23T10:05:47.0556757Z     },
2026-06-23T10:05:47.0556847Z     {
2026-06-23T10:05:47.0556943Z       "id": "REQ-RCVIEW-1",
2026-06-23T10:05:47.0561316Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-23T10:05:47.0561659Z       "requiredStages": [
2026-06-23T10:05:47.0561745Z         "doc",
2026-06-23T10:05:47.0561827Z         "impl",
2026-06-23T10:05:47.0561912Z         "unit",
2026-06-23T10:05:47.0561992Z         "int"
2026-06-23T10:05:47.0562074Z       ],
2026-06-23T10:05:47.0562160Z       "stages": {
2026-06-23T10:05:47.0562245Z         "doc": {
2026-06-23T10:05:47.0562340Z           "complete": true,
2026-06-23T10:05:47.0562451Z           "evidence": [
2026-06-23T10:05:47.0562556Z             {
2026-06-23T10:05:47.0562655Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0562738Z               "line": 355
2026-06-23T10:05:47.0562822Z             }
2026-06-23T10:05:47.0562913Z           ]
2026-06-23T10:05:47.0562994Z         },
2026-06-23T10:05:47.0563095Z         "impl": {
2026-06-23T10:05:47.0563185Z           "complete": true,
2026-06-23T10:05:47.0563280Z           "evidence": [
2026-06-23T10:05:47.0563363Z             {
2026-06-23T10:05:47.0563490Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T10:05:47.0563586Z               "line": 528
2026-06-23T10:05:47.0563662Z             },
2026-06-23T10:05:47.0563753Z             {
2026-06-23T10:05:47.0563861Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:47.0563956Z               "line": 629
2026-06-23T10:05:47.0564033Z             },
2026-06-23T10:05:47.0564117Z             {
2026-06-23T10:05:47.0564244Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:47.0564331Z               "line": 640
2026-06-23T10:05:47.0564417Z             },
2026-06-23T10:05:47.0564503Z             {
2026-06-23T10:05:47.0564626Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-23T10:05:47.0564708Z               "line": 41
2026-06-23T10:05:47.0564789Z             },
2026-06-23T10:05:47.0564873Z             {
2026-06-23T10:05:47.0564985Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-23T10:05:47.0565075Z               "line": 62
2026-06-23T10:05:47.0565160Z             },
2026-06-23T10:05:47.0565246Z             {
2026-06-23T10:05:47.0565366Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:47.0565461Z               "line": 309
2026-06-23T10:05:47.0565547Z             },
2026-06-23T10:05:47.0565633Z             {
2026-06-23T10:05:47.0565742Z               "path": "crates/spt/src/rc.rs",
2026-06-23T10:05:47.0565828Z               "line": 738
2026-06-23T10:05:47.0565920Z             }
2026-06-23T10:05:47.0566005Z           ]
2026-06-23T10:05:47.0566089Z         },
2026-06-23T10:05:47.0566181Z         "int": {
2026-06-23T10:05:47.0566277Z           "complete": true,
2026-06-23T10:05:47.0566376Z           "evidence": [
2026-06-23T10:05:47.0566461Z             {
2026-06-23T10:05:47.0566585Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T10:05:47.0566773Z               "line": 922
2026-06-23T10:05:47.0566864Z             },
2026-06-23T10:05:47.0566955Z             {
2026-06-23T10:05:47.0567060Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T10:05:47.0567159Z               "line": 962
2026-06-23T10:05:47.0567237Z             },
2026-06-23T10:05:47.0567322Z             {
2026-06-23T10:05:47.0567431Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T10:05:47.0567518Z               "line": 1009
2026-06-23T10:05:47.0567604Z             },
2026-06-23T10:05:47.0567755Z             {
2026-06-23T10:05:47.0567880Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T10:05:47.0567970Z               "line": 1161
2026-06-23T10:05:47.0568065Z             }
2026-06-23T10:05:47.0568157Z           ]
2026-06-23T10:05:47.0568243Z         },
2026-06-23T10:05:47.0568324Z         "unit": {
2026-06-23T10:05:47.0568409Z           "complete": true,
2026-06-23T10:05:47.0568510Z           "evidence": [
2026-06-23T10:05:47.0568595Z             {
2026-06-23T10:05:47.0568719Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-23T10:05:47.0568815Z               "line": 175
2026-06-23T10:05:47.0568905Z             },
2026-06-23T10:05:47.0569058Z             {
2026-06-23T10:05:47.0569178Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-23T10:05:47.0569276Z               "line": 195
2026-06-23T10:05:47.0569366Z             }
2026-06-23T10:05:47.0569447Z           ]
2026-06-23T10:05:47.0569534Z         }
2026-06-23T10:05:47.0569619Z       }
2026-06-23T10:05:47.0569719Z     },
2026-06-23T10:05:47.0569796Z     {
2026-06-23T10:05:47.0569897Z       "id": "REQ-REACH-1",
2026-06-23T10:05:47.0570043Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-23T10:05:47.0570149Z       "requiredStages": [
2026-06-23T10:05:47.0570235Z         "impl",
2026-06-23T10:05:47.0570320Z         "unit",
2026-06-23T10:05:47.0570411Z         "int"
2026-06-23T10:05:47.0570506Z       ],
2026-06-23T10:05:47.0570596Z       "stages": {
2026-06-23T10:05:47.0570682Z         "doc": {
2026-06-23T10:05:47.0570779Z           "complete": false,
2026-06-23T10:05:47.0570878Z           "evidence": []
2026-06-23T10:05:47.0570964Z         },
2026-06-23T10:05:47.0571055Z         "impl": {
2026-06-23T10:05:47.0571145Z           "complete": true,
2026-06-23T10:05:47.0571240Z           "evidence": [
2026-06-23T10:05:47.0571316Z             {
2026-06-23T10:05:47.0571451Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:47.0571549Z               "line": 629
2026-06-23T10:05:47.0571644Z             },
2026-06-23T10:05:47.0571731Z             {
2026-06-23T10:05:47.0571842Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-23T10:05:47.0571942Z               "line": 76
2026-06-23T10:05:47.0572019Z             },
2026-06-23T10:05:47.0572111Z             {
2026-06-23T10:05:47.0572233Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-23T10:05:47.0572329Z               "line": 222
2026-06-23T10:05:47.0572415Z             },
2026-06-23T10:05:47.0572505Z             {
2026-06-23T10:05:47.0572620Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-23T10:05:47.0572711Z               "line": 422
2026-06-23T10:05:47.0572805Z             },
2026-06-23T10:05:47.0572896Z             {
2026-06-23T10:05:47.0573007Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-23T10:05:47.0573097Z               "line": 529
2026-06-23T10:05:47.0573182Z             },
2026-06-23T10:05:47.0573264Z             {
2026-06-23T10:05:47.0573378Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-23T10:05:47.0573478Z               "line": 39
2026-06-23T10:05:47.0573564Z             },
2026-06-23T10:05:47.0573637Z             {
2026-06-23T10:05:47.0573759Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:47.0573840Z               "line": 301
2026-06-23T10:05:47.0573937Z             },
2026-06-23T10:05:47.0574146Z             {
2026-06-23T10:05:47.0574266Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-23T10:05:47.0574360Z               "line": 88
2026-06-23T10:05:47.0574450Z             },
2026-06-23T10:05:47.0574535Z             {
2026-06-23T10:05:47.0574644Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-23T10:05:47.0574743Z               "line": 98
2026-06-23T10:05:47.0574823Z             },
2026-06-23T10:05:47.0574910Z             {
2026-06-23T10:05:47.0575039Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.0575124Z               "line": 233
2026-06-23T10:05:47.0575311Z             }
2026-06-23T10:05:47.0575396Z           ]
2026-06-23T10:05:47.0575477Z         },
2026-06-23T10:05:47.0575564Z         "int": {
2026-06-23T10:05:47.0575659Z           "complete": true,
2026-06-23T10:05:47.0575758Z           "evidence": [
2026-06-23T10:05:47.0575840Z             {
2026-06-23T10:05:47.0575969Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T10:05:47.0576073Z               "line": 415
2026-06-23T10:05:47.0576165Z             },
2026-06-23T10:05:47.0576250Z             {
2026-06-23T10:05:47.0576383Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T10:05:47.0576485Z               "line": 524
2026-06-23T10:05:47.0576575Z             },
2026-06-23T10:05:47.0576664Z             {
2026-06-23T10:05:47.0576785Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0576885Z               "line": 1000
2026-06-23T10:05:47.0576965Z             },
2026-06-23T10:05:47.0577049Z             {
2026-06-23T10:05:47.0577178Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0577267Z               "line": 1385
2026-06-23T10:05:47.0577357Z             }
2026-06-23T10:05:47.0577448Z           ]
2026-06-23T10:05:47.0577530Z         },
2026-06-23T10:05:47.0577615Z         "unit": {
2026-06-23T10:05:47.0577705Z           "complete": true,
2026-06-23T10:05:47.0577792Z           "evidence": [
2026-06-23T10:05:47.0577872Z             {
2026-06-23T10:05:47.0577991Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-23T10:05:47.0578068Z               "line": 639
2026-06-23T10:05:47.0578154Z             },
2026-06-23T10:05:47.0578235Z             {
2026-06-23T10:05:47.0578344Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-23T10:05:47.0578440Z               "line": 660
2026-06-23T10:05:47.0578516Z             },
2026-06-23T10:05:47.0578602Z             {
2026-06-23T10:05:47.0578727Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T10:05:47.0578822Z               "line": 777
2026-06-23T10:05:47.0578917Z             },
2026-06-23T10:05:47.0579084Z             {
2026-06-23T10:05:47.0579202Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-23T10:05:47.0579293Z               "line": 93
2026-06-23T10:05:47.0579375Z             },
2026-06-23T10:05:47.0579451Z             {
2026-06-23T10:05:47.0579570Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-23T10:05:47.0579671Z               "line": 224
2026-06-23T10:05:47.0579743Z             },
2026-06-23T10:05:47.0579827Z             {
2026-06-23T10:05:47.0579931Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-23T10:05:47.0580031Z               "line": 96
2026-06-23T10:05:47.0580119Z             },
2026-06-23T10:05:47.0580207Z             {
2026-06-23T10:05:47.0580327Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-23T10:05:47.0580408Z               "line": 146
2026-06-23T10:05:47.0580508Z             },
2026-06-23T10:05:47.0580589Z             {
2026-06-23T10:05:47.0580709Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:47.0580790Z               "line": 698
2026-06-23T10:05:47.0580870Z             },
2026-06-23T10:05:47.0580957Z             {
2026-06-23T10:05:47.0581071Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-23T10:05:47.0581166Z               "line": 118
2026-06-23T10:05:47.0581252Z             },
2026-06-23T10:05:47.0581462Z             {
2026-06-23T10:05:47.0581572Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-23T10:05:47.0581668Z               "line": 148
2026-06-23T10:05:47.0581762Z             },
2026-06-23T10:05:47.0581848Z             {
2026-06-23T10:05:47.0581969Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.0582053Z               "line": 928
2026-06-23T10:05:47.0582138Z             }
2026-06-23T10:05:47.0582229Z           ]
2026-06-23T10:05:47.0582310Z         }
2026-06-23T10:05:47.0582398Z       }
2026-06-23T10:05:47.0582479Z     },
2026-06-23T10:05:47.0582671Z     {
2026-06-23T10:05:47.0582769Z       "id": "REQ-REACH-2",
2026-06-23T10:05:47.0582923Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-23T10:05:47.0583023Z       "requiredStages": [],
2026-06-23T10:05:47.0583108Z       "stages": {
2026-06-23T10:05:47.0583194Z         "doc": {
2026-06-23T10:05:47.0583280Z           "complete": false,
2026-06-23T10:05:47.0583389Z           "evidence": []
2026-06-23T10:05:47.0583475Z         },
2026-06-23T10:05:47.0583558Z         "impl": {
2026-06-23T10:05:47.0583647Z           "complete": false,
2026-06-23T10:05:47.0583742Z           "evidence": []
2026-06-23T10:05:47.0583829Z         },
2026-06-23T10:05:47.0583910Z         "int": {
2026-06-23T10:05:47.0584014Z           "complete": false,
2026-06-23T10:05:47.0584100Z           "evidence": []
2026-06-23T10:05:47.0584197Z         },
2026-06-23T10:05:47.0584286Z         "unit": {
2026-06-23T10:05:47.0584386Z           "complete": false,
2026-06-23T10:05:47.0584487Z           "evidence": []
2026-06-23T10:05:47.0584572Z         }
2026-06-23T10:05:47.0584658Z       }
2026-06-23T10:05:47.0584739Z     },
2026-06-23T10:05:47.0584826Z     {
2026-06-23T10:05:47.0584929Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-23T10:05:47.0588303Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-23T10:05:47.0588428Z       "requiredStages": [
2026-06-23T10:05:47.0588518Z         "doc",
2026-06-23T10:05:47.0588604Z         "impl",
2026-06-23T10:05:47.0588686Z         "unit",
2026-06-23T10:05:47.0588771Z         "int"
2026-06-23T10:05:47.0588861Z       ],
2026-06-23T10:05:47.0589020Z       "stages": {
2026-06-23T10:05:47.0589105Z         "doc": {
2026-06-23T10:05:47.0589200Z           "complete": true,
2026-06-23T10:05:47.0589287Z           "evidence": [
2026-06-23T10:05:47.0589367Z             {
2026-06-23T10:05:47.0589472Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0589558Z               "line": 385
2026-06-23T10:05:47.0589649Z             }
2026-06-23T10:05:47.0589730Z           ]
2026-06-23T10:05:47.0589811Z         },
2026-06-23T10:05:47.0589902Z         "impl": {
2026-06-23T10:05:47.0589983Z           "complete": true,
2026-06-23T10:05:47.0590082Z           "evidence": [
2026-06-23T10:05:47.0590163Z             {
2026-06-23T10:05:47.0590288Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T10:05:47.0590491Z               "line": 110
2026-06-23T10:05:47.0590582Z             }
2026-06-23T10:05:47.0590669Z           ]
2026-06-23T10:05:47.0590744Z         },
2026-06-23T10:05:47.0590835Z         "int": {
2026-06-23T10:05:47.0590921Z           "complete": true,
2026-06-23T10:05:47.0591017Z           "evidence": [
2026-06-23T10:05:47.0591106Z             {
2026-06-23T10:05:47.0591255Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-23T10:05:47.0591351Z               "line": 26
2026-06-23T10:05:47.0591430Z             }
2026-06-23T10:05:47.0591522Z           ]
2026-06-23T10:05:47.0591712Z         },
2026-06-23T10:05:47.0591793Z         "unit": {
2026-06-23T10:05:47.0591885Z           "complete": true,
2026-06-23T10:05:47.0591969Z           "evidence": [
2026-06-23T10:05:47.0592064Z             {
2026-06-23T10:05:47.0592180Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T10:05:47.0592270Z               "line": 320
2026-06-23T10:05:47.0592361Z             }
2026-06-23T10:05:47.0592451Z           ]
2026-06-23T10:05:47.0592538Z         }
2026-06-23T10:05:47.0592636Z       }
2026-06-23T10:05:47.0592717Z     },
2026-06-23T10:05:47.0592798Z     {
2026-06-23T10:05:47.0592893Z       "id": "REQ-REL-1",
2026-06-23T10:05:47.0593268Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-23T10:05:47.0593368Z       "requiredStages": [
2026-06-23T10:05:47.0593454Z         "doc",
2026-06-23T10:05:47.0593549Z         "impl"
2026-06-23T10:05:47.0593644Z       ],
2026-06-23T10:05:47.0593735Z       "stages": {
2026-06-23T10:05:47.0593827Z         "doc": {
2026-06-23T10:05:47.0593922Z           "complete": true,
2026-06-23T10:05:47.0594016Z           "evidence": [
2026-06-23T10:05:47.0594103Z             {
2026-06-23T10:05:47.0594321Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-23T10:05:47.0594427Z               "line": 3
2026-06-23T10:05:47.0594508Z             }
2026-06-23T10:05:47.0594598Z           ]
2026-06-23T10:05:47.0594679Z         },
2026-06-23T10:05:47.0594766Z         "impl": {
2026-06-23T10:05:47.0594851Z           "complete": true,
2026-06-23T10:05:47.0594936Z           "evidence": [
2026-06-23T10:05:47.0595029Z             {
2026-06-23T10:05:47.0595147Z               "path": ".github/workflows/docs-publish.yml",
2026-06-23T10:05:47.0595242Z               "line": 11
2026-06-23T10:05:47.0595329Z             },
2026-06-23T10:05:47.0595406Z             {
2026-06-23T10:05:47.0595513Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:47.0595617Z               "line": 357
2026-06-23T10:05:47.0595708Z             }
2026-06-23T10:05:47.0595793Z           ]
2026-06-23T10:05:47.0595882Z         },
2026-06-23T10:05:47.0595973Z         "int": {
2026-06-23T10:05:47.0596069Z           "complete": false,
2026-06-23T10:05:47.0596159Z           "evidence": []
2026-06-23T10:05:47.0596263Z         },
2026-06-23T10:05:47.0596356Z         "unit": {
2026-06-23T10:05:47.0596451Z           "complete": false,
2026-06-23T10:05:47.0596545Z           "evidence": []
2026-06-23T10:05:47.0596631Z         }
2026-06-23T10:05:47.0596726Z       }
2026-06-23T10:05:47.0596812Z     },
2026-06-23T10:05:47.0596893Z     {
2026-06-23T10:05:47.0596990Z       "id": "REQ-REL-2",
2026-06-23T10:05:47.0597456Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-23T10:05:47.0597566Z       "requiredStages": [
2026-06-23T10:05:47.0597648Z         "impl",
2026-06-23T10:05:47.0597737Z         "int"
2026-06-23T10:05:47.0597823Z       ],
2026-06-23T10:05:47.0597910Z       "stages": {
2026-06-23T10:05:47.0598000Z         "doc": {
2026-06-23T10:05:47.0598090Z           "complete": true,
2026-06-23T10:05:47.0598184Z           "evidence": [
2026-06-23T10:05:47.0598261Z             {
2026-06-23T10:05:47.0598463Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-23T10:05:47.0598544Z               "line": 6
2026-06-23T10:05:47.0598626Z             }
2026-06-23T10:05:47.0598712Z           ]
2026-06-23T10:05:47.0598797Z         },
2026-06-23T10:05:47.0598888Z         "impl": {
2026-06-23T10:05:47.0599059Z           "complete": true,
2026-06-23T10:05:47.0599150Z           "evidence": [
2026-06-23T10:05:47.0599237Z             {
2026-06-23T10:05:47.0599360Z               "path": ".github/workflows/release.yml",
2026-06-23T10:05:47.0599459Z               "line": 16
2026-06-23T10:05:47.0599641Z             },
2026-06-23T10:05:47.0599736Z             {
2026-06-23T10:05:47.0599832Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:47.0599927Z               "line": 444
2026-06-23T10:05:47.0600008Z             },
2026-06-23T10:05:47.0600084Z             {
2026-06-23T10:05:47.0600195Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:47.0600290Z               "line": 518
2026-06-23T10:05:47.0600375Z             },
2026-06-23T10:05:47.0600462Z             {
2026-06-23T10:05:47.0600571Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:47.0600661Z               "line": 680
2026-06-23T10:05:47.0600738Z             },
2026-06-23T10:05:47.0600830Z             {
2026-06-23T10:05:47.0600938Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:47.0601023Z               "line": 812
2026-06-23T10:05:47.0601108Z             }
2026-06-23T10:05:47.0601196Z           ]
2026-06-23T10:05:47.0601285Z         },
2026-06-23T10:05:47.0601366Z         "int": {
2026-06-23T10:05:47.0601462Z           "complete": true,
2026-06-23T10:05:47.0601557Z           "evidence": [
2026-06-23T10:05:47.0601652Z             {
2026-06-23T10:05:47.0601777Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-23T10:05:47.0601877Z               "line": 13
2026-06-23T10:05:47.0601962Z             }
2026-06-23T10:05:47.0602048Z           ]
2026-06-23T10:05:47.0602135Z         },
2026-06-23T10:05:47.0602224Z         "unit": {
2026-06-23T10:05:47.0602324Z           "complete": false,
2026-06-23T10:05:47.0602412Z           "evidence": []
2026-06-23T10:05:47.0602497Z         }
2026-06-23T10:05:47.0602583Z       }
2026-06-23T10:05:47.0602663Z     },
2026-06-23T10:05:47.0602745Z     {
2026-06-23T10:05:47.0602840Z       "id": "REQ-REL-3",
2026-06-23T10:05:47.0603268Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-23T10:05:47.0603368Z       "requiredStages": [
2026-06-23T10:05:47.0603467Z         "impl",
2026-06-23T10:05:47.0606605Z         "unit"
2026-06-23T10:05:47.0606729Z       ],
2026-06-23T10:05:47.0606833Z       "stages": {
2026-06-23T10:05:47.0606920Z         "doc": {
2026-06-23T10:05:47.0607020Z           "complete": false,
2026-06-23T10:05:47.0607119Z           "evidence": []
2026-06-23T10:05:47.0607196Z         },
2026-06-23T10:05:47.0607301Z         "impl": {
2026-06-23T10:05:47.0607400Z           "complete": true,
2026-06-23T10:05:47.0607492Z           "evidence": [
2026-06-23T10:05:47.0607578Z             {
2026-06-23T10:05:47.0607710Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.0607796Z               "line": 247
2026-06-23T10:05:47.0607889Z             },
2026-06-23T10:05:47.0607968Z             {
2026-06-23T10:05:47.0608093Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.0608174Z               "line": 299
2026-06-23T10:05:47.0608259Z             },
2026-06-23T10:05:47.0608364Z             {
2026-06-23T10:05:47.0608475Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:47.0608574Z               "line": 421
2026-06-23T10:05:47.0608659Z             },
2026-06-23T10:05:47.0608744Z             {
2026-06-23T10:05:47.0608850Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:47.0608929Z               "line": 445
2026-06-23T10:05:47.0609286Z             },
2026-06-23T10:05:47.0609362Z             {
2026-06-23T10:05:47.0609477Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:47.0609563Z               "line": 486
2026-06-23T10:05:47.0609648Z             }
2026-06-23T10:05:47.0609734Z           ]
2026-06-23T10:05:47.0609811Z         },
2026-06-23T10:05:47.0609901Z         "int": {
2026-06-23T10:05:47.0609991Z           "complete": false,
2026-06-23T10:05:47.0610093Z           "evidence": []
2026-06-23T10:05:47.0610182Z         },
2026-06-23T10:05:47.0610263Z         "unit": {
2026-06-23T10:05:47.0610358Z           "complete": true,
2026-06-23T10:05:47.0610550Z           "evidence": [
2026-06-23T10:05:47.0610635Z             {
2026-06-23T10:05:47.0610751Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.0610845Z               "line": 1055
2026-06-23T10:05:47.0610935Z             },
2026-06-23T10:05:47.0611018Z             {
2026-06-23T10:05:47.0611155Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.0611246Z               "line": 1114
2026-06-23T10:05:47.0611337Z             }
2026-06-23T10:05:47.0611414Z           ]
2026-06-23T10:05:47.0611498Z         }
2026-06-23T10:05:47.0611587Z       }
2026-06-23T10:05:47.0611664Z     },
2026-06-23T10:05:47.0611756Z     {
2026-06-23T10:05:47.0611865Z       "id": "REQ-RUN-MULTISUBNET-HOME",
2026-06-23T10:05:47.0614584Z       "title": "`spt endpoint run` resolves the home subnet at the skeleton-create step and pre-creates the skeleton perch carrying it, so the harness `bind` inherits home via establish_perch's immutable prior-branch (no hook change, no env injection). Resolution: sole-subnet auto; multi-subnet + no --subnet + NON-interactive terminal -> refuse early with MRU-ordered --subnet guidance (never the silent 25s online-timeout); multi-subnet + no --subnet + INTERACTIVE -> print proposed config (id/project/adapter[:profile]/home=MRU-default) + 'Ok to proceed? Y/n', n -> --subnet guidance; --subnet overrides + validates membership. MRU = ordered move-to-front LISTs at two levels (per-project + always-updated node-global fallback). Home stays IMMUTABLE (ADR-0010). Fixes the LATENT multi-subnet bringup gap (perri, not a regression — HOME_REFUSED established >=0.11.0; exposed by the node crossing 1->2 subnets). (ADR-0026)",
2026-06-23T10:05:47.0614708Z       "requiredStages": [
2026-06-23T10:05:47.0614793Z         "doc",
2026-06-23T10:05:47.0614875Z         "impl",
2026-06-23T10:05:47.0614966Z         "unit",
2026-06-23T10:05:47.0615046Z         "int"
2026-06-23T10:05:47.0615131Z       ],
2026-06-23T10:05:47.0615219Z       "stages": {
2026-06-23T10:05:47.0615318Z         "doc": {
2026-06-23T10:05:47.0615418Z           "complete": true,
2026-06-23T10:05:47.0615509Z           "evidence": [
2026-06-23T10:05:47.0615614Z             {
2026-06-23T10:05:47.0615804Z               "path": "docs/adr/0026-multi-subnet-home-at-endpoint-run-creation.md",
2026-06-23T10:05:47.0615901Z               "line": 3
2026-06-23T10:05:47.0615990Z             }
2026-06-23T10:05:47.0616090Z           ]
2026-06-23T10:05:47.0616177Z         },
2026-06-23T10:05:47.0616263Z         "impl": {
2026-06-23T10:05:47.0616372Z           "complete": true,
2026-06-23T10:05:47.0616463Z           "evidence": [
2026-06-23T10:05:47.0616545Z             {
2026-06-23T10:05:47.0616671Z               "path": "crates/spt-store/src/recent_home.rs",
2026-06-23T10:05:47.0616766Z               "line": 16
2026-06-23T10:05:47.0616862Z             },
2026-06-23T10:05:47.0616951Z             {
2026-06-23T10:05:47.0617083Z               "path": "crates/spt-store/src/recent_home.rs",
2026-06-23T10:05:47.0617175Z               "line": 42
2026-06-23T10:05:47.0617256Z             },
2026-06-23T10:05:47.0617341Z             {
2026-06-23T10:05:47.0617466Z               "path": "crates/spt-store/src/recent_home.rs",
2026-06-23T10:05:47.0617556Z               "line": 50
2026-06-23T10:05:47.0617646Z             },
2026-06-23T10:05:47.0617737Z             {
2026-06-23T10:05:47.0617842Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0618023Z               "line": 1432
2026-06-23T10:05:47.0618110Z             },
2026-06-23T10:05:47.0618194Z             {
2026-06-23T10:05:47.0618299Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0618396Z               "line": 1515
2026-06-23T10:05:47.0618477Z             },
2026-06-23T10:05:47.0618561Z             {
2026-06-23T10:05:47.0618667Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0618749Z               "line": 1537
2026-06-23T10:05:47.0618838Z             },
2026-06-23T10:05:47.0618919Z             {
2026-06-23T10:05:47.0619214Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0619313Z               "line": 1557
2026-06-23T10:05:47.0619400Z             },
2026-06-23T10:05:47.0619484Z             {
2026-06-23T10:05:47.0619579Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0619665Z               "line": 1586
2026-06-23T10:05:47.0619746Z             },
2026-06-23T10:05:47.0619832Z             {
2026-06-23T10:05:47.0619950Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-23T10:05:47.0620043Z               "line": 274
2026-06-23T10:05:47.0620123Z             }
2026-06-23T10:05:47.0620203Z           ]
2026-06-23T10:05:47.0620289Z         },
2026-06-23T10:05:47.0620371Z         "int": {
2026-06-23T10:05:47.0620457Z           "complete": true,
2026-06-23T10:05:47.0620551Z           "evidence": [
2026-06-23T10:05:47.0620638Z             {
2026-06-23T10:05:47.0620785Z               "path": "crates/spt/tests/multi_subnet_bringup_e2e.rs",
2026-06-23T10:05:47.0620871Z               "line": 198
2026-06-23T10:05:47.0620967Z             },
2026-06-23T10:05:47.0621038Z             {
2026-06-23T10:05:47.0621181Z               "path": "crates/spt/tests/multi_subnet_bringup_e2e.rs",
2026-06-23T10:05:47.0621268Z               "line": 279
2026-06-23T10:05:47.0621353Z             },
2026-06-23T10:05:47.0621438Z             {
2026-06-23T10:05:47.0621573Z               "path": "crates/spt/tests/multi_subnet_bringup_e2e.rs",
2026-06-23T10:05:47.0621673Z               "line": 285
2026-06-23T10:05:47.0621757Z             },
2026-06-23T10:05:47.0621844Z             {
2026-06-23T10:05:47.0621974Z               "path": "crates/spt/tests/multi_subnet_bringup_e2e.rs",
2026-06-23T10:05:47.0622053Z               "line": 296
2026-06-23T10:05:47.0622138Z             }
2026-06-23T10:05:47.0622224Z           ]
2026-06-23T10:05:47.0622311Z         },
2026-06-23T10:05:47.0622396Z         "unit": {
2026-06-23T10:05:47.0622490Z           "complete": true,
2026-06-23T10:05:47.0622582Z           "evidence": [
2026-06-23T10:05:47.0622663Z             {
2026-06-23T10:05:47.0622792Z               "path": "crates/spt-store/src/recent_home.rs",
2026-06-23T10:05:47.0622883Z               "line": 115
2026-06-23T10:05:47.0622973Z             },
2026-06-23T10:05:47.0623063Z             {
2026-06-23T10:05:47.0623174Z               "path": "crates/spt-store/src/recent_home.rs",
2026-06-23T10:05:47.0623269Z               "line": 137
2026-06-23T10:05:47.0623354Z             },
2026-06-23T10:05:47.0623445Z             {
2026-06-23T10:05:47.0623560Z               "path": "crates/spt-store/src/recent_home.rs",
2026-06-23T10:05:47.0623655Z               "line": 156
2026-06-23T10:05:47.0623741Z             },
2026-06-23T10:05:47.0623827Z             {
2026-06-23T10:05:47.0623955Z               "path": "crates/spt-store/src/recent_home.rs",
2026-06-23T10:05:47.0624041Z               "line": 170
2026-06-23T10:05:47.0624132Z             },
2026-06-23T10:05:47.0624218Z             {
2026-06-23T10:05:47.0624346Z               "path": "crates/spt-store/src/recent_home.rs",
2026-06-23T10:05:47.0624445Z               "line": 189
2026-06-23T10:05:47.0624531Z             },
2026-06-23T10:05:47.0624620Z             {
2026-06-23T10:05:47.0624738Z               "path": "crates/spt-store/src/recent_home.rs",
2026-06-23T10:05:47.0624839Z               "line": 198
2026-06-23T10:05:47.0624916Z             },
2026-06-23T10:05:47.0625120Z             {
2026-06-23T10:05:47.0625226Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0625315Z               "line": 1690
2026-06-23T10:05:47.0625406Z             },
2026-06-23T10:05:47.0625488Z             {
2026-06-23T10:05:47.0625602Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0625706Z               "line": 1740
2026-06-23T10:05:47.0625788Z             }
2026-06-23T10:05:47.0625874Z           ]
2026-06-23T10:05:47.0625959Z         }
2026-06-23T10:05:47.0626050Z       }
2026-06-23T10:05:47.0626122Z     },
2026-06-23T10:05:47.0626212Z     {
2026-06-23T10:05:47.0626394Z       "id": "REQ-RUN-PICKER",
2026-06-23T10:05:47.0631055Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-23T10:05:47.0631198Z       "requiredStages": [
2026-06-23T10:05:47.0631284Z         "doc",
2026-06-23T10:05:47.0631365Z         "impl",
2026-06-23T10:05:47.0631450Z         "unit"
2026-06-23T10:05:47.0631547Z       ],
2026-06-23T10:05:47.0631631Z       "stages": {
2026-06-23T10:05:47.0631717Z         "doc": {
2026-06-23T10:05:47.0631818Z           "complete": true,
2026-06-23T10:05:47.0631918Z           "evidence": [
2026-06-23T10:05:47.0632003Z             {
2026-06-23T10:05:47.0632104Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0632200Z               "line": 362
2026-06-23T10:05:47.0632275Z             }
2026-06-23T10:05:47.0632361Z           ]
2026-06-23T10:05:47.0632443Z         },
2026-06-23T10:05:47.0632525Z         "impl": {
2026-06-23T10:05:47.0632636Z           "complete": true,
2026-06-23T10:05:47.0632727Z           "evidence": [
2026-06-23T10:05:47.0632813Z             {
2026-06-23T10:05:47.0632928Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0633023Z               "line": 1027
2026-06-23T10:05:47.0633104Z             },
2026-06-23T10:05:47.0633195Z             {
2026-06-23T10:05:47.0633304Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0633394Z               "line": 1037
2026-06-23T10:05:47.0633486Z             },
2026-06-23T10:05:47.0633572Z             {
2026-06-23T10:05:47.0633690Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T10:05:47.0633787Z               "line": 9
2026-06-23T10:05:47.0633872Z             },
2026-06-23T10:05:47.0633962Z             {
2026-06-23T10:05:47.0634082Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T10:05:47.0634172Z               "line": 67
2026-06-23T10:05:47.0634258Z             },
2026-06-23T10:05:47.0634348Z             {
2026-06-23T10:05:47.0634563Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-23T10:05:47.0634654Z               "line": 16
2026-06-23T10:05:47.0634731Z             },
2026-06-23T10:05:47.0634816Z             {
2026-06-23T10:05:47.0634929Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-23T10:05:47.0635024Z               "line": 254
2026-06-23T10:05:47.0635105Z             },
2026-06-23T10:05:47.0635189Z             {
2026-06-23T10:05:47.0635303Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0635390Z               "line": 11
2026-06-23T10:05:47.0635481Z             },
2026-06-23T10:05:47.0635685Z             {
2026-06-23T10:05:47.0635809Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0635895Z               "line": 126
2026-06-23T10:05:47.0635985Z             },
2026-06-23T10:05:47.0636067Z             {
2026-06-23T10:05:47.0636180Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0636276Z               "line": 582
2026-06-23T10:05:47.0636367Z             },
2026-06-23T10:05:47.0636453Z             {
2026-06-23T10:05:47.0636557Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0636649Z               "line": 663
2026-06-23T10:05:47.0636739Z             },
2026-06-23T10:05:47.0636824Z             {
2026-06-23T10:05:47.0636939Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0637035Z               "line": 722
2026-06-23T10:05:47.0637125Z             },
2026-06-23T10:05:47.0637206Z             {
2026-06-23T10:05:47.0637326Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0637425Z               "line": 775
2026-06-23T10:05:47.0637516Z             },
2026-06-23T10:05:47.0637598Z             {
2026-06-23T10:05:47.0637712Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0637810Z               "line": 813
2026-06-23T10:05:47.0637887Z             },
2026-06-23T10:05:47.0637972Z             {
2026-06-23T10:05:47.0638090Z               "path": "crates/spt/src/picker/view.rs",
2026-06-23T10:05:47.0638175Z               "line": 8
2026-06-23T10:05:47.0638257Z             }
2026-06-23T10:05:47.0638343Z           ]
2026-06-23T10:05:47.0638433Z         },
2026-06-23T10:05:47.0638519Z         "int": {
2026-06-23T10:05:47.0638620Z           "complete": false,
2026-06-23T10:05:47.0638705Z           "evidence": []
2026-06-23T10:05:47.0638794Z         },
2026-06-23T10:05:47.0638892Z         "unit": {
2026-06-23T10:05:47.0639067Z           "complete": true,
2026-06-23T10:05:47.0639158Z           "evidence": [
2026-06-23T10:05:47.0639254Z             {
2026-06-23T10:05:47.0639363Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0639448Z               "line": 9015
2026-06-23T10:05:47.0639545Z             },
2026-06-23T10:05:47.0639625Z             {
2026-06-23T10:05:47.0639730Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0639816Z               "line": 9026
2026-06-23T10:05:47.0639902Z             },
2026-06-23T10:05:47.0639987Z             {
2026-06-23T10:05:47.0640097Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0640189Z               "line": 908
2026-06-23T10:05:47.0640274Z             },
2026-06-23T10:05:47.0640358Z             {
2026-06-23T10:05:47.0640468Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0640554Z               "line": 995
2026-06-23T10:05:47.0640642Z             },
2026-06-23T10:05:47.0640718Z             {
2026-06-23T10:05:47.0640842Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0640939Z               "line": 1046
2026-06-23T10:05:47.0641013Z             },
2026-06-23T10:05:47.0641099Z             {
2026-06-23T10:05:47.0641205Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0641305Z               "line": 1063
2026-06-23T10:05:47.0641386Z             },
2026-06-23T10:05:47.0641472Z             {
2026-06-23T10:05:47.0641596Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0641782Z               "line": 1072
2026-06-23T10:05:47.0641872Z             },
2026-06-23T10:05:47.0641944Z             {
2026-06-23T10:05:47.0642063Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0642154Z               "line": 1083
2026-06-23T10:05:47.0642230Z             },
2026-06-23T10:05:47.0642320Z             {
2026-06-23T10:05:47.0642426Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0642521Z               "line": 1105
2026-06-23T10:05:47.0642602Z             },
2026-06-23T10:05:47.0642693Z             {
2026-06-23T10:05:47.0642907Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0642993Z               "line": 1124
2026-06-23T10:05:47.0643080Z             },
2026-06-23T10:05:47.0643164Z             {
2026-06-23T10:05:47.0643282Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0643359Z               "line": 1174
2026-06-23T10:05:47.0643450Z             },
2026-06-23T10:05:47.0643535Z             {
2026-06-23T10:05:47.0643649Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0643736Z               "line": 1203
2026-06-23T10:05:47.0643827Z             },
2026-06-23T10:05:47.0643912Z             {
2026-06-23T10:05:47.0644023Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0644122Z               "line": 1216
2026-06-23T10:05:47.0644207Z             },
2026-06-23T10:05:47.0644289Z             {
2026-06-23T10:05:47.0644403Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0644503Z               "line": 1282
2026-06-23T10:05:47.0644589Z             },
2026-06-23T10:05:47.0644671Z             {
2026-06-23T10:05:47.0644784Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0644870Z               "line": 1323
2026-06-23T10:05:47.0644952Z             },
2026-06-23T10:05:47.0645038Z             {
2026-06-23T10:05:47.0645147Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0645247Z               "line": 1339
2026-06-23T10:05:47.0645334Z             },
2026-06-23T10:05:47.0645418Z             {
2026-06-23T10:05:47.0645532Z               "path": "crates/spt/src/picker/view.rs",
2026-06-23T10:05:47.0645618Z               "line": 524
2026-06-23T10:05:47.0645707Z             },
2026-06-23T10:05:47.0645797Z             {
2026-06-23T10:05:47.0645916Z               "path": "crates/spt/src/picker/view.rs",
2026-06-23T10:05:47.0646012Z               "line": 539
2026-06-23T10:05:47.0646102Z             },
2026-06-23T10:05:47.0646192Z             {
2026-06-23T10:05:47.0646312Z               "path": "crates/spt/src/picker/view.rs",
2026-06-23T10:05:47.0646412Z               "line": 557
2026-06-23T10:05:47.0646497Z             },
2026-06-23T10:05:47.0646585Z             {
2026-06-23T10:05:47.0646689Z               "path": "crates/spt/src/picker/view.rs",
2026-06-23T10:05:47.0646779Z               "line": 579
2026-06-23T10:05:47.0646861Z             },
2026-06-23T10:05:47.0646942Z             {
2026-06-23T10:05:47.0647051Z               "path": "crates/spt/src/picker/view.rs",
2026-06-23T10:05:47.0647132Z               "line": 589
2026-06-23T10:05:47.0647219Z             },
2026-06-23T10:05:47.0647313Z             {
2026-06-23T10:05:47.0647418Z               "path": "crates/spt/src/picker/view.rs",
2026-06-23T10:05:47.0647504Z               "line": 615
2026-06-23T10:05:47.0647586Z             }
2026-06-23T10:05:47.0647666Z           ]
2026-06-23T10:05:47.0647747Z         }
2026-06-23T10:05:47.0647834Z       }
2026-06-23T10:05:47.0647919Z     },
2026-06-23T10:05:47.0648009Z     {
2026-06-23T10:05:47.0648120Z       "id": "REQ-RUN-SHORTCUT",
2026-06-23T10:05:47.0652733Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-23T10:05:47.0653062Z       "requiredStages": [
2026-06-23T10:05:47.0653148Z         "doc",
2026-06-23T10:05:47.0653243Z         "impl",
2026-06-23T10:05:47.0653320Z         "unit"
2026-06-23T10:05:47.0653405Z       ],
2026-06-23T10:05:47.0653491Z       "stages": {
2026-06-23T10:05:47.0653592Z         "doc": {
2026-06-23T10:05:47.0653687Z           "complete": true,
2026-06-23T10:05:47.0653776Z           "evidence": [
2026-06-23T10:05:47.0653857Z             {
2026-06-23T10:05:47.0653952Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0654044Z               "line": 403
2026-06-23T10:05:47.0654123Z             }
2026-06-23T10:05:47.0654209Z           ]
2026-06-23T10:05:47.0654302Z         },
2026-06-23T10:05:47.0654392Z         "impl": {
2026-06-23T10:05:47.0654491Z           "complete": true,
2026-06-23T10:05:47.0654583Z           "evidence": [
2026-06-23T10:05:47.0654668Z             {
2026-06-23T10:05:47.0654796Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-23T10:05:47.0654892Z               "line": 39
2026-06-23T10:05:47.0654978Z             },
2026-06-23T10:05:47.0655064Z             {
2026-06-23T10:05:47.0655188Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-23T10:05:47.0655274Z               "line": 79
2026-06-23T10:05:47.0655369Z             },
2026-06-23T10:05:47.0655454Z             {
2026-06-23T10:05:47.0655575Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-23T10:05:47.0655668Z               "line": 162
2026-06-23T10:05:47.0655745Z             }
2026-06-23T10:05:47.0655837Z           ]
2026-06-23T10:05:47.0655923Z         },
2026-06-23T10:05:47.0656012Z         "int": {
2026-06-23T10:05:47.0656111Z           "complete": false,
2026-06-23T10:05:47.0656202Z           "evidence": []
2026-06-23T10:05:47.0656286Z         },
2026-06-23T10:05:47.0656367Z         "unit": {
2026-06-23T10:05:47.0656462Z           "complete": true,
2026-06-23T10:05:47.0656553Z           "evidence": [
2026-06-23T10:05:47.0656643Z             {
2026-06-23T10:05:47.0656752Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-23T10:05:47.0656844Z               "line": 206
2026-06-23T10:05:47.0656930Z             },
2026-06-23T10:05:47.0657015Z             {
2026-06-23T10:05:47.0657140Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-23T10:05:47.0657230Z               "line": 222
2026-06-23T10:05:47.0657305Z             },
2026-06-23T10:05:47.0657386Z             {
2026-06-23T10:05:47.0657511Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-23T10:05:47.0657606Z               "line": 238
2026-06-23T10:05:47.0657682Z             },
2026-06-23T10:05:47.0657769Z             {
2026-06-23T10:05:47.0657968Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-23T10:05:47.0658050Z               "line": 251
2026-06-23T10:05:47.0658141Z             },
2026-06-23T10:05:47.0658230Z             {
2026-06-23T10:05:47.0658355Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-23T10:05:47.0658428Z               "line": 258
2026-06-23T10:05:47.0658512Z             }
2026-06-23T10:05:47.0658593Z           ]
2026-06-23T10:05:47.0658675Z         }
2026-06-23T10:05:47.0658767Z       }
2026-06-23T10:05:47.0658855Z     },
2026-06-23T10:05:47.0658936Z     {
2026-06-23T10:05:47.0659219Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-23T10:05:47.0659439Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-23T10:05:47.0659534Z       "requiredStages": [
2026-06-23T10:05:47.0659624Z         "impl",
2026-06-23T10:05:47.0659707Z         "unit"
2026-06-23T10:05:47.0659797Z       ],
2026-06-23T10:05:47.0659882Z       "stages": {
2026-06-23T10:05:47.0659968Z         "doc": {
2026-06-23T10:05:47.0660064Z           "complete": false,
2026-06-23T10:05:47.0660154Z           "evidence": []
2026-06-23T10:05:47.0660230Z         },
2026-06-23T10:05:47.0660316Z         "impl": {
2026-06-23T10:05:47.0660412Z           "complete": true,
2026-06-23T10:05:47.0660497Z           "evidence": [
2026-06-23T10:05:47.0660578Z             {
2026-06-23T10:05:47.0660698Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T10:05:47.0660788Z               "line": 18
2026-06-23T10:05:47.0660874Z             },
2026-06-23T10:05:47.0660956Z             {
2026-06-23T10:05:47.0661088Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T10:05:47.0661189Z               "line": 35
2026-06-23T10:05:47.0661266Z             },
2026-06-23T10:05:47.0661356Z             {
2026-06-23T10:05:47.0661460Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T10:05:47.0661545Z               "line": 72
2026-06-23T10:05:47.0661627Z             }
2026-06-23T10:05:47.0661720Z           ]
2026-06-23T10:05:47.0661810Z         },
2026-06-23T10:05:47.0661886Z         "int": {
2026-06-23T10:05:47.0661982Z           "complete": false,
2026-06-23T10:05:47.0662063Z           "evidence": []
2026-06-23T10:05:47.0662157Z         },
2026-06-23T10:05:47.0662244Z         "unit": {
2026-06-23T10:05:47.0662335Z           "complete": true,
2026-06-23T10:05:47.0662416Z           "evidence": [
2026-06-23T10:05:47.0662506Z             {
2026-06-23T10:05:47.0662621Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T10:05:47.0662711Z               "line": 239
2026-06-23T10:05:47.0662801Z             },
2026-06-23T10:05:47.0662884Z             {
2026-06-23T10:05:47.0662993Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T10:05:47.0663088Z               "line": 256
2026-06-23T10:05:47.0663174Z             },
2026-06-23T10:05:47.0663260Z             {
2026-06-23T10:05:47.0663365Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T10:05:47.0663460Z               "line": 265
2026-06-23T10:05:47.0663542Z             }
2026-06-23T10:05:47.0663622Z           ]
2026-06-23T10:05:47.0663708Z         }
2026-06-23T10:05:47.0663794Z       }
2026-06-23T10:05:47.0663876Z     },
2026-06-23T10:05:47.0663965Z     {
2026-06-23T10:05:47.0664070Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-23T10:05:47.0664209Z       "title": "Hostable endpoint-types capability declaration",
2026-06-23T10:05:47.0664308Z       "requiredStages": [
2026-06-23T10:05:47.0664393Z         "impl",
2026-06-23T10:05:47.0664469Z         "unit"
2026-06-23T10:05:47.0664556Z       ],
2026-06-23T10:05:47.0664642Z       "stages": {
2026-06-23T10:05:47.0664722Z         "doc": {
2026-06-23T10:05:47.0664818Z           "complete": false,
2026-06-23T10:05:47.0664908Z           "evidence": []
2026-06-23T10:05:47.0664999Z         },
2026-06-23T10:05:47.0665089Z         "impl": {
2026-06-23T10:05:47.0665181Z           "complete": true,
2026-06-23T10:05:47.0665267Z           "evidence": [
2026-06-23T10:05:47.0665481Z             {
2026-06-23T10:05:47.0665605Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.0665690Z               "line": 598
2026-06-23T10:05:47.0665772Z             }
2026-06-23T10:05:47.0665853Z           ]
2026-06-23T10:05:47.0665944Z         },
2026-06-23T10:05:47.0666029Z         "int": {
2026-06-23T10:05:47.0666130Z           "complete": false,
2026-06-23T10:05:47.0666224Z           "evidence": []
2026-06-23T10:05:47.0666314Z         },
2026-06-23T10:05:47.0666407Z         "unit": {
2026-06-23T10:05:47.0666502Z           "complete": true,
2026-06-23T10:05:47.0666581Z           "evidence": [
2026-06-23T10:05:47.0666748Z             {
2026-06-23T10:05:47.0666865Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.0666946Z               "line": 967
2026-06-23T10:05:47.0667037Z             }
2026-06-23T10:05:47.0667123Z           ]
2026-06-23T10:05:47.0667203Z         }
2026-06-23T10:05:47.0667289Z       }
2026-06-23T10:05:47.0667375Z     },
2026-06-23T10:05:47.0667461Z     {
2026-06-23T10:05:47.0667565Z       "id": "REQ-SEAM-HISTORY",
2026-06-23T10:05:47.0667738Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-23T10:05:47.0667833Z       "requiredStages": [
2026-06-23T10:05:47.0667923Z         "impl",
2026-06-23T10:05:47.0668015Z         "unit",
2026-06-23T10:05:47.0668095Z         "int"
2026-06-23T10:05:47.0668181Z       ],
2026-06-23T10:05:47.0668266Z       "stages": {
2026-06-23T10:05:47.0668348Z         "doc": {
2026-06-23T10:05:47.0668433Z           "complete": false,
2026-06-23T10:05:47.0668514Z           "evidence": []
2026-06-23T10:05:47.0668615Z         },
2026-06-23T10:05:47.0668702Z         "impl": {
2026-06-23T10:05:47.0668805Z           "complete": true,
2026-06-23T10:05:47.0668886Z           "evidence": [
2026-06-23T10:05:47.0669040Z             {
2026-06-23T10:05:47.0669168Z               "path": "crates/spt-live/src/echo.rs",
2026-06-23T10:05:47.0669255Z               "line": 24
2026-06-23T10:05:47.0669355Z             },
2026-06-23T10:05:47.0669439Z             {
2026-06-23T10:05:47.0669562Z               "path": "crates/spt-live/src/history.rs",
2026-06-23T10:05:47.0669644Z               "line": 22
2026-06-23T10:05:47.0669732Z             }
2026-06-23T10:05:47.0669817Z           ]
2026-06-23T10:05:47.0669894Z         },
2026-06-23T10:05:47.0669990Z         "int": {
2026-06-23T10:05:47.0670084Z           "complete": true,
2026-06-23T10:05:47.0670170Z           "evidence": [
2026-06-23T10:05:47.0670252Z             {
2026-06-23T10:05:47.0670376Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T10:05:47.0670480Z               "line": 260
2026-06-23T10:05:47.0670562Z             }
2026-06-23T10:05:47.0670643Z           ]
2026-06-23T10:05:47.0670724Z         },
2026-06-23T10:05:47.0670814Z         "unit": {
2026-06-23T10:05:47.0670901Z           "complete": true,
2026-06-23T10:05:47.0670995Z           "evidence": [
2026-06-23T10:05:47.0671086Z             {
2026-06-23T10:05:47.0671196Z               "path": "crates/spt-live/src/echo.rs",
2026-06-23T10:05:47.0671287Z               "line": 171
2026-06-23T10:05:47.0671367Z             },
2026-06-23T10:05:47.0671453Z             {
2026-06-23T10:05:47.0671555Z               "path": "crates/spt-live/src/echo.rs",
2026-06-23T10:05:47.0671648Z               "line": 200
2026-06-23T10:05:47.0671730Z             },
2026-06-23T10:05:47.0671807Z             {
2026-06-23T10:05:47.0671916Z               "path": "crates/spt-live/src/echo.rs",
2026-06-23T10:05:47.0672006Z               "line": 220
2026-06-23T10:05:47.0672095Z             },
2026-06-23T10:05:47.0672182Z             {
2026-06-23T10:05:47.0672304Z               "path": "crates/spt-live/src/history.rs",
2026-06-23T10:05:47.0672393Z               "line": 199
2026-06-23T10:05:47.0672480Z             },
2026-06-23T10:05:47.0672562Z             {
2026-06-23T10:05:47.0672675Z               "path": "crates/spt-live/src/history.rs",
2026-06-23T10:05:47.0672761Z               "line": 219
2026-06-23T10:05:47.0672957Z             },
2026-06-23T10:05:47.0673042Z             {
2026-06-23T10:05:47.0673153Z               "path": "crates/spt-live/src/history.rs",
2026-06-23T10:05:47.0673243Z               "line": 244
2026-06-23T10:05:47.0673328Z             },
2026-06-23T10:05:47.0673410Z             {
2026-06-23T10:05:47.0673529Z               "path": "crates/spt-live/src/history.rs",
2026-06-23T10:05:47.0673615Z               "line": 276
2026-06-23T10:05:47.0673700Z             },
2026-06-23T10:05:47.0673783Z             {
2026-06-23T10:05:47.0673896Z               "path": "crates/spt-live/src/history.rs",
2026-06-23T10:05:47.0674088Z               "line": 297
2026-06-23T10:05:47.0674173Z             },
2026-06-23T10:05:47.0674253Z             {
2026-06-23T10:05:47.0674373Z               "path": "crates/spt-live/src/history.rs",
2026-06-23T10:05:47.0674450Z               "line": 324
2026-06-23T10:05:47.0674530Z             }
2026-06-23T10:05:47.0674616Z           ]
2026-06-23T10:05:47.0674703Z         }
2026-06-23T10:05:47.0674789Z       }
2026-06-23T10:05:47.0674868Z     },
2026-06-23T10:05:47.0674958Z     {
2026-06-23T10:05:47.0675054Z       "id": "REQ-SEAM-INJECT",
2026-06-23T10:05:47.0675221Z       "title": "inject-input methods configurable per activity-state",
2026-06-23T10:05:47.0675311Z       "requiredStages": [
2026-06-23T10:05:47.0675392Z         "impl",
2026-06-23T10:05:47.0675478Z         "unit"
2026-06-23T10:05:47.0675559Z       ],
2026-06-23T10:05:47.0675649Z       "stages": {
2026-06-23T10:05:47.0675736Z         "doc": {
2026-06-23T10:05:47.0675832Z           "complete": false,
2026-06-23T10:05:47.0675921Z           "evidence": []
2026-06-23T10:05:47.0676008Z         },
2026-06-23T10:05:47.0676089Z         "impl": {
2026-06-23T10:05:47.0676184Z           "complete": true,
2026-06-23T10:05:47.0676284Z           "evidence": [
2026-06-23T10:05:47.0676366Z             {
2026-06-23T10:05:47.0676474Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T10:05:47.0676569Z               "line": 19
2026-06-23T10:05:47.0676666Z             },
2026-06-23T10:05:47.0676756Z             {
2026-06-23T10:05:47.0676870Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T10:05:47.0676962Z               "line": 111
2026-06-23T10:05:47.0677038Z             }
2026-06-23T10:05:47.0677132Z           ]
2026-06-23T10:05:47.0677217Z         },
2026-06-23T10:05:47.0677303Z         "int": {
2026-06-23T10:05:47.0677398Z           "complete": false,
2026-06-23T10:05:47.0677501Z           "evidence": []
2026-06-23T10:05:47.0677582Z         },
2026-06-23T10:05:47.0677674Z         "unit": {
2026-06-23T10:05:47.0677782Z           "complete": true,
2026-06-23T10:05:47.0677868Z           "evidence": [
2026-06-23T10:05:47.0677969Z             {
2026-06-23T10:05:47.0678083Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T10:05:47.0678178Z               "line": 345
2026-06-23T10:05:47.0678270Z             },
2026-06-23T10:05:47.0678345Z             {
2026-06-23T10:05:47.0678464Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T10:05:47.0678551Z               "line": 365
2026-06-23T10:05:47.0678646Z             }
2026-06-23T10:05:47.0678727Z           ]
2026-06-23T10:05:47.0678802Z         }
2026-06-23T10:05:47.0678899Z       }
2026-06-23T10:05:47.0679056Z     },
2026-06-23T10:05:47.0679136Z     {
2026-06-23T10:05:47.0679243Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-23T10:05:47.0679385Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-23T10:05:47.0679485Z       "requiredStages": [
2026-06-23T10:05:47.0679572Z         "impl",
2026-06-23T10:05:47.0679651Z         "unit"
2026-06-23T10:05:47.0679737Z       ],
2026-06-23T10:05:47.0679824Z       "stages": {
2026-06-23T10:05:47.0679915Z         "doc": {
2026-06-23T10:05:47.0680013Z           "complete": false,
2026-06-23T10:05:47.0680098Z           "evidence": []
2026-06-23T10:05:47.0680184Z         },
2026-06-23T10:05:47.0680274Z         "impl": {
2026-06-23T10:05:47.0680373Z           "complete": true,
2026-06-23T10:05:47.0680574Z           "evidence": [
2026-06-23T10:05:47.0680659Z             {
2026-06-23T10:05:47.0680783Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0680874Z               "line": 18
2026-06-23T10:05:47.0680960Z             },
2026-06-23T10:05:47.0681040Z             {
2026-06-23T10:05:47.0681151Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0681251Z               "line": 431
2026-06-23T10:05:47.0681331Z             }
2026-06-23T10:05:47.0684047Z           ]
2026-06-23T10:05:47.0684160Z         },
2026-06-23T10:05:47.0684255Z         "int": {
2026-06-23T10:05:47.0684509Z           "complete": false,
2026-06-23T10:05:47.0684609Z           "evidence": []
2026-06-23T10:05:47.0684695Z         },
2026-06-23T10:05:47.0684775Z         "unit": {
2026-06-23T10:05:47.0684881Z           "complete": true,
2026-06-23T10:05:47.0684972Z           "evidence": [
2026-06-23T10:05:47.0685057Z             {
2026-06-23T10:05:47.0685186Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0685277Z               "line": 881
2026-06-23T10:05:47.0685367Z             },
2026-06-23T10:05:47.0685452Z             {
2026-06-23T10:05:47.0685580Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0685667Z               "line": 891
2026-06-23T10:05:47.0685743Z             }
2026-06-23T10:05:47.0685832Z           ]
2026-06-23T10:05:47.0685914Z         }
2026-06-23T10:05:47.0686001Z       }
2026-06-23T10:05:47.0686086Z     },
2026-06-23T10:05:47.0686171Z     {
2026-06-23T10:05:47.0686259Z       "id": "REQ-SEAM-PSYCHE",
2026-06-23T10:05:47.0686410Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-23T10:05:47.0686505Z       "requiredStages": [
2026-06-23T10:05:47.0686587Z         "impl",
2026-06-23T10:05:47.0686673Z         "unit",
2026-06-23T10:05:47.0686758Z         "int"
2026-06-23T10:05:47.0686849Z       ],
2026-06-23T10:05:47.0686935Z       "stages": {
2026-06-23T10:05:47.0687025Z         "doc": {
2026-06-23T10:05:47.0687129Z           "complete": false,
2026-06-23T10:05:47.0687222Z           "evidence": []
2026-06-23T10:05:47.0687312Z         },
2026-06-23T10:05:47.0687397Z         "impl": {
2026-06-23T10:05:47.0687498Z           "complete": true,
2026-06-23T10:05:47.0687593Z           "evidence": [
2026-06-23T10:05:47.0687673Z             {
2026-06-23T10:05:47.0687801Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-23T10:05:47.0687887Z               "line": 19
2026-06-23T10:05:47.0687962Z             },
2026-06-23T10:05:47.0688047Z             {
2026-06-23T10:05:47.0688162Z               "path": "crates/spt/src/api/live.rs",
2026-06-23T10:05:47.0688257Z               "line": 12
2026-06-23T10:05:47.0688338Z             },
2026-06-23T10:05:47.0688418Z             {
2026-06-23T10:05:47.0688534Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0688624Z               "line": 301
2026-06-23T10:05:47.0688700Z             }
2026-06-23T10:05:47.0688786Z           ]
2026-06-23T10:05:47.0688873Z         },
2026-06-23T10:05:47.0689052Z         "int": {
2026-06-23T10:05:47.0689149Z           "complete": true,
2026-06-23T10:05:47.0689239Z           "evidence": [
2026-06-23T10:05:47.0689320Z             {
2026-06-23T10:05:47.0689440Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T10:05:47.0689544Z               "line": 259
2026-06-23T10:05:47.0689630Z             }
2026-06-23T10:05:47.0689716Z           ]
2026-06-23T10:05:47.0689803Z         },
2026-06-23T10:05:47.0689888Z         "unit": {
2026-06-23T10:05:47.0689983Z           "complete": true,
2026-06-23T10:05:47.0690075Z           "evidence": [
2026-06-23T10:05:47.0690156Z             {
2026-06-23T10:05:47.0690269Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-23T10:05:47.0690351Z               "line": 195
2026-06-23T10:05:47.0690437Z             },
2026-06-23T10:05:47.0690517Z             {
2026-06-23T10:05:47.0690626Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-23T10:05:47.0690816Z               "line": 202
2026-06-23T10:05:47.0690909Z             },
2026-06-23T10:05:47.0690995Z             {
2026-06-23T10:05:47.0691110Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-23T10:05:47.0691205Z               "line": 225
2026-06-23T10:05:47.0691290Z             },
2026-06-23T10:05:47.0691372Z             {
2026-06-23T10:05:47.0691482Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-23T10:05:47.0691567Z               "line": 106
2026-06-23T10:05:47.0691658Z             },
2026-06-23T10:05:47.0691745Z             {
2026-06-23T10:05:47.0691854Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-23T10:05:47.0692040Z               "line": 137
2026-06-23T10:05:47.0692125Z             },
2026-06-23T10:05:47.0692211Z             {
2026-06-23T10:05:47.0692322Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-23T10:05:47.0692412Z               "line": 161
2026-06-23T10:05:47.0692507Z             }
2026-06-23T10:05:47.0692593Z           ]
2026-06-23T10:05:47.0692684Z         }
2026-06-23T10:05:47.0692769Z       }
2026-06-23T10:05:47.0692855Z     },
2026-06-23T10:05:47.0692942Z     {
2026-06-23T10:05:47.0693037Z       "id": "REQ-SEAM-RESUME",
2026-06-23T10:05:47.0693211Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-23T10:05:47.0693316Z       "requiredStages": [
2026-06-23T10:05:47.0693396Z         "impl",
2026-06-23T10:05:47.0693476Z         "unit"
2026-06-23T10:05:47.0693561Z       ],
2026-06-23T10:05:47.0693643Z       "stages": {
2026-06-23T10:05:47.0693725Z         "doc": {
2026-06-23T10:05:47.0693829Z           "complete": false,
2026-06-23T10:05:47.0693924Z           "evidence": []
2026-06-23T10:05:47.0694001Z         },
2026-06-23T10:05:47.0694091Z         "impl": {
2026-06-23T10:05:47.0694177Z           "complete": true,
2026-06-23T10:05:47.0694273Z           "evidence": [
2026-06-23T10:05:47.0694344Z             {
2026-06-23T10:05:47.0694453Z               "path": "crates/spt-live/src/resume.rs",
2026-06-23T10:05:47.0694549Z               "line": 19
2026-06-23T10:05:47.0694635Z             }
2026-06-23T10:05:47.0694721Z           ]
2026-06-23T10:05:47.0694811Z         },
2026-06-23T10:05:47.0694898Z         "int": {
2026-06-23T10:05:47.0694983Z           "complete": false,
2026-06-23T10:05:47.0695087Z           "evidence": []
2026-06-23T10:05:47.0695174Z         },
2026-06-23T10:05:47.0695260Z         "unit": {
2026-06-23T10:05:47.0695349Z           "complete": true,
2026-06-23T10:05:47.0695441Z           "evidence": [
2026-06-23T10:05:47.0695532Z             {
2026-06-23T10:05:47.0695626Z               "path": "crates/spt-live/src/resume.rs",
2026-06-23T10:05:47.0695727Z               "line": 201
2026-06-23T10:05:47.0695819Z             },
2026-06-23T10:05:47.0695904Z             {
2026-06-23T10:05:47.0696021Z               "path": "crates/spt-live/src/resume.rs",
2026-06-23T10:05:47.0696102Z               "line": 223
2026-06-23T10:05:47.0696189Z             },
2026-06-23T10:05:47.0696270Z             {
2026-06-23T10:05:47.0696388Z               "path": "crates/spt-live/src/resume.rs",
2026-06-23T10:05:47.0696479Z               "line": 244
2026-06-23T10:05:47.0696561Z             }
2026-06-23T10:05:47.0696641Z           ]
2026-06-23T10:05:47.0696717Z         }
2026-06-23T10:05:47.0696804Z       }
2026-06-23T10:05:47.0696894Z     },
2026-06-23T10:05:47.0696984Z     {
2026-06-23T10:05:47.0697085Z       "id": "REQ-SEAM-SPAWN",
2026-06-23T10:05:47.0697185Z       "title": "spawn-session seam",
2026-06-23T10:05:47.0697280Z       "requiredStages": [
2026-06-23T10:05:47.0697366Z         "impl",
2026-06-23T10:05:47.0697458Z         "unit"
2026-06-23T10:05:47.0697543Z       ],
2026-06-23T10:05:47.0697628Z       "stages": {
2026-06-23T10:05:47.0697714Z         "doc": {
2026-06-23T10:05:47.0697810Z           "complete": false,
2026-06-23T10:05:47.0697909Z           "evidence": []
2026-06-23T10:05:47.0697991Z         },
2026-06-23T10:05:47.0698077Z         "impl": {
2026-06-23T10:05:47.0698163Z           "complete": true,
2026-06-23T10:05:47.0698366Z           "evidence": [
2026-06-23T10:05:47.0698466Z             {
2026-06-23T10:05:47.0698593Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:47.0698683Z               "line": 20
2026-06-23T10:05:47.0698764Z             }
2026-06-23T10:05:47.0698842Z           ]
2026-06-23T10:05:47.0698927Z         },
2026-06-23T10:05:47.0699151Z         "int": {
2026-06-23T10:05:47.0699251Z           "complete": false,
2026-06-23T10:05:47.0699332Z           "evidence": []
2026-06-23T10:05:47.0699433Z         },
2026-06-23T10:05:47.0699518Z         "unit": {
2026-06-23T10:05:47.0699728Z           "complete": true,
2026-06-23T10:05:47.0699814Z           "evidence": [
2026-06-23T10:05:47.0699894Z             {
2026-06-23T10:05:47.0700020Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:47.0700104Z               "line": 611
2026-06-23T10:05:47.0700181Z             },
2026-06-23T10:05:47.0700261Z             {
2026-06-23T10:05:47.0700387Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:47.0700471Z               "line": 618
2026-06-23T10:05:47.0700552Z             },
2026-06-23T10:05:47.0700649Z             {
2026-06-23T10:05:47.0700762Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:47.0700858Z               "line": 724
2026-06-23T10:05:47.0700940Z             },
2026-06-23T10:05:47.0701016Z             {
2026-06-23T10:05:47.0701134Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:47.0701224Z               "line": 730
2026-06-23T10:05:47.0701310Z             },
2026-06-23T10:05:47.0701399Z             {
2026-06-23T10:05:47.0701521Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:47.0701594Z               "line": 755
2026-06-23T10:05:47.0701680Z             },
2026-06-23T10:05:47.0701756Z             {
2026-06-23T10:05:47.0701870Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T10:05:47.0701961Z               "line": 792
2026-06-23T10:05:47.0702052Z             }
2026-06-23T10:05:47.0702136Z           ]
2026-06-23T10:05:47.0702218Z         }
2026-06-23T10:05:47.0702305Z       }
2026-06-23T10:05:47.0702386Z     },
2026-06-23T10:05:47.0702470Z     {
2026-06-23T10:05:47.0702572Z       "id": "REQ-SEAM-UPDATE",
2026-06-23T10:05:47.0702724Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-23T10:05:47.0702814Z       "requiredStages": [
2026-06-23T10:05:47.0702901Z         "impl",
2026-06-23T10:05:47.0702986Z         "unit"
2026-06-23T10:05:47.0703072Z       ],
2026-06-23T10:05:47.0703153Z       "stages": {
2026-06-23T10:05:47.0703244Z         "doc": {
2026-06-23T10:05:47.0703334Z           "complete": false,
2026-06-23T10:05:47.0703419Z           "evidence": []
2026-06-23T10:05:47.0703507Z         },
2026-06-23T10:05:47.0703597Z         "impl": {
2026-06-23T10:05:47.0703695Z           "complete": true,
2026-06-23T10:05:47.0703790Z           "evidence": [
2026-06-23T10:05:47.0703876Z             {
2026-06-23T10:05:47.0704012Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T10:05:47.0704103Z               "line": 28
2026-06-23T10:05:47.0704184Z             },
2026-06-23T10:05:47.0704261Z             {
2026-06-23T10:05:47.0704389Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T10:05:47.0704485Z               "line": 88
2026-06-23T10:05:47.0704561Z             }
2026-06-23T10:05:47.0704647Z           ]
2026-06-23T10:05:47.0704732Z         },
2026-06-23T10:05:47.0704819Z         "int": {
2026-06-23T10:05:47.0704909Z           "complete": false,
2026-06-23T10:05:47.0704999Z           "evidence": []
2026-06-23T10:05:47.0705090Z         },
2026-06-23T10:05:47.0705177Z         "unit": {
2026-06-23T10:05:47.0705261Z           "complete": true,
2026-06-23T10:05:47.0705357Z           "evidence": [
2026-06-23T10:05:47.0705439Z             {
2026-06-23T10:05:47.0705571Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T10:05:47.0705763Z               "line": 332
2026-06-23T10:05:47.0705849Z             },
2026-06-23T10:05:47.0705934Z             {
2026-06-23T10:05:47.0706059Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T10:05:47.0706154Z               "line": 343
2026-06-23T10:05:47.0706238Z             }
2026-06-23T10:05:47.0706320Z           ]
2026-06-23T10:05:47.0706398Z         }
2026-06-23T10:05:47.0706488Z       }
2026-06-23T10:05:47.0706577Z     },
2026-06-23T10:05:47.0706662Z     {
2026-06-23T10:05:47.0706758Z       "id": "REQ-SEC-1",
2026-06-23T10:05:47.0707144Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-23T10:05:47.0707315Z       "requiredStages": [
2026-06-23T10:05:47.0707407Z         "impl",
2026-06-23T10:05:47.0707493Z         "unit"
2026-06-23T10:05:47.0707582Z       ],
2026-06-23T10:05:47.0707664Z       "stages": {
2026-06-23T10:05:47.0707755Z         "doc": {
2026-06-23T10:05:47.0707850Z           "complete": false,
2026-06-23T10:05:47.0707940Z           "evidence": []
2026-06-23T10:05:47.0708023Z         },
2026-06-23T10:05:47.0708107Z         "impl": {
2026-06-23T10:05:47.0708207Z           "complete": true,
2026-06-23T10:05:47.0708299Z           "evidence": [
2026-06-23T10:05:47.0708380Z             {
2026-06-23T10:05:47.0708488Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-23T10:05:47.0708584Z               "line": 86
2026-06-23T10:05:47.0708667Z             },
2026-06-23T10:05:47.0708747Z             {
2026-06-23T10:05:47.0708855Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-23T10:05:47.0709040Z               "line": 116
2026-06-23T10:05:47.0709124Z             },
2026-06-23T10:05:47.0709205Z             {
2026-06-23T10:05:47.0709325Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-23T10:05:47.0709429Z               "line": 130
2026-06-23T10:05:47.0709515Z             },
2026-06-23T10:05:47.0709606Z             {
2026-06-23T10:05:47.0709721Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T10:05:47.0709811Z               "line": 109
2026-06-23T10:05:47.0709882Z             },
2026-06-23T10:05:47.0709964Z             {
2026-06-23T10:05:47.0710087Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T10:05:47.0710168Z               "line": 130
2026-06-23T10:05:47.0710256Z             },
2026-06-23T10:05:47.0710336Z             {
2026-06-23T10:05:47.0710445Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T10:05:47.0710536Z               "line": 143
2026-06-23T10:05:47.0710632Z             },
2026-06-23T10:05:47.0710717Z             {
2026-06-23T10:05:47.0710821Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T10:05:47.0710918Z               "line": 209
2026-06-23T10:05:47.0710998Z             },
2026-06-23T10:05:47.0711080Z             {
2026-06-23T10:05:47.0711185Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T10:05:47.0711285Z               "line": 235
2026-06-23T10:05:47.0711374Z             },
2026-06-23T10:05:47.0711456Z             {
2026-06-23T10:05:47.0711571Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0711661Z               "line": 5950
2026-06-23T10:05:47.0711746Z             }
2026-06-23T10:05:47.0711831Z           ]
2026-06-23T10:05:47.0711917Z         },
2026-06-23T10:05:47.0712001Z         "int": {
2026-06-23T10:05:47.0712086Z           "complete": false,
2026-06-23T10:05:47.0712178Z           "evidence": []
2026-06-23T10:05:47.0712254Z         },
2026-06-23T10:05:47.0712340Z         "unit": {
2026-06-23T10:05:47.0712440Z           "complete": true,
2026-06-23T10:05:47.0712521Z           "evidence": [
2026-06-23T10:05:47.0712607Z             {
2026-06-23T10:05:47.0712730Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-23T10:05:47.0712822Z               "line": 142
2026-06-23T10:05:47.0712912Z             },
2026-06-23T10:05:47.0713002Z             {
2026-06-23T10:05:47.0713227Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-23T10:05:47.0713312Z               "line": 194
2026-06-23T10:05:47.0713403Z             },
2026-06-23T10:05:47.0713480Z             {
2026-06-23T10:05:47.0713607Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-23T10:05:47.0713694Z               "line": 235
2026-06-23T10:05:47.0713767Z             },
2026-06-23T10:05:47.0713847Z             {
2026-06-23T10:05:47.0713975Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-23T10:05:47.0714072Z               "line": 140
2026-06-23T10:05:47.0714143Z             },
2026-06-23T10:05:47.0714336Z             {
2026-06-23T10:05:47.0714446Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T10:05:47.0714535Z               "line": 247
2026-06-23T10:05:47.0714624Z             },
2026-06-23T10:05:47.0714711Z             {
2026-06-23T10:05:47.0714821Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T10:05:47.0714902Z               "line": 277
2026-06-23T10:05:47.0715001Z             },
2026-06-23T10:05:47.0715084Z             {
2026-06-23T10:05:47.0715198Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T10:05:47.0715287Z               "line": 310
2026-06-23T10:05:47.0715374Z             },
2026-06-23T10:05:47.0715464Z             {
2026-06-23T10:05:47.0715583Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T10:05:47.0715675Z               "line": 329
2026-06-23T10:05:47.0715760Z             },
2026-06-23T10:05:47.0715851Z             {
2026-06-23T10:05:47.0715969Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T10:05:47.0716061Z               "line": 362
2026-06-23T10:05:47.0716146Z             },
2026-06-23T10:05:47.0716227Z             {
2026-06-23T10:05:47.0716338Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T10:05:47.0716432Z               "line": 386
2026-06-23T10:05:47.0716518Z             },
2026-06-23T10:05:47.0716614Z             {
2026-06-23T10:05:47.0716724Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0716813Z               "line": 9692
2026-06-23T10:05:47.0716890Z             }
2026-06-23T10:05:47.0716982Z           ]
2026-06-23T10:05:47.0717067Z         }
2026-06-23T10:05:47.0717156Z       }
2026-06-23T10:05:47.0717241Z     },
2026-06-23T10:05:47.0717318Z     {
2026-06-23T10:05:47.0717424Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-23T10:05:47.0721145Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-23T10:05:47.0721277Z       "requiredStages": [
2026-06-23T10:05:47.0721363Z         "impl",
2026-06-23T10:05:47.0721445Z         "unit",
2026-06-23T10:05:47.0721530Z         "int"
2026-06-23T10:05:47.0721611Z       ],
2026-06-23T10:05:47.0721687Z       "stages": {
2026-06-23T10:05:47.0721774Z         "doc": {
2026-06-23T10:05:47.0721983Z           "complete": false,
2026-06-23T10:05:47.0722084Z           "evidence": []
2026-06-23T10:05:47.0722174Z         },
2026-06-23T10:05:47.0722263Z         "impl": {
2026-06-23T10:05:47.0722358Z           "complete": true,
2026-06-23T10:05:47.0722435Z           "evidence": [
2026-06-23T10:05:47.0722524Z             {
2026-06-23T10:05:47.0722646Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:47.0722738Z               "line": 1188
2026-06-23T10:05:47.0722824Z             },
2026-06-23T10:05:47.0722909Z             {
2026-06-23T10:05:47.0723038Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:47.0723248Z               "line": 1874
2026-06-23T10:05:47.0723334Z             },
2026-06-23T10:05:47.0723410Z             {
2026-06-23T10:05:47.0723529Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0723624Z               "line": 3500
2026-06-23T10:05:47.0723707Z             }
2026-06-23T10:05:47.0723791Z           ]
2026-06-23T10:05:47.0723887Z         },
2026-06-23T10:05:47.0723978Z         "int": {
2026-06-23T10:05:47.0724068Z           "complete": true,
2026-06-23T10:05:47.0724154Z           "evidence": [
2026-06-23T10:05:47.0724244Z             {
2026-06-23T10:05:47.0724360Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-23T10:05:47.0724445Z               "line": 191
2026-06-23T10:05:47.0724531Z             },
2026-06-23T10:05:47.0724622Z             {
2026-06-23T10:05:47.0724732Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-23T10:05:47.0724825Z               "line": 530
2026-06-23T10:05:47.0724915Z             }
2026-06-23T10:05:47.0725006Z           ]
2026-06-23T10:05:47.0725095Z         },
2026-06-23T10:05:47.0725184Z         "unit": {
2026-06-23T10:05:47.0725285Z           "complete": true,
2026-06-23T10:05:47.0725367Z           "evidence": [
2026-06-23T10:05:47.0725462Z             {
2026-06-23T10:05:47.0725576Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:47.0725658Z               "line": 1016
2026-06-23T10:05:47.0725753Z             },
2026-06-23T10:05:47.0725838Z             {
2026-06-23T10:05:47.0725953Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0726048Z               "line": 8863
2026-06-23T10:05:47.0726143Z             }
2026-06-23T10:05:47.0726235Z           ]
2026-06-23T10:05:47.0726316Z         }
2026-06-23T10:05:47.0726406Z       }
2026-06-23T10:05:47.0726491Z     },
2026-06-23T10:05:47.0726578Z     {
2026-06-23T10:05:47.0726687Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-23T10:05:47.0733417Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-23T10:05:47.0733779Z       "requiredStages": [
2026-06-23T10:05:47.0733864Z         "doc",
2026-06-23T10:05:47.0733943Z         "impl",
2026-06-23T10:05:47.0734028Z         "unit",
2026-06-23T10:05:47.0734113Z         "int"
2026-06-23T10:05:47.0734204Z       ],
2026-06-23T10:05:47.0734295Z       "stages": {
2026-06-23T10:05:47.0734380Z         "doc": {
2026-06-23T10:05:47.0734480Z           "complete": true,
2026-06-23T10:05:47.0734567Z           "evidence": [
2026-06-23T10:05:47.0734657Z             {
2026-06-23T10:05:47.0734804Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-23T10:05:47.0734892Z               "line": 130
2026-06-23T10:05:47.0734981Z             },
2026-06-23T10:05:47.0735057Z             {
2026-06-23T10:05:47.0735163Z               "path": "docs/MANIFEST.md",
2026-06-23T10:05:47.0735244Z               "line": 104
2026-06-23T10:05:47.0735334Z             }
2026-06-23T10:05:47.0735418Z           ]
2026-06-23T10:05:47.0735504Z         },
2026-06-23T10:05:47.0735595Z         "impl": {
2026-06-23T10:05:47.0735683Z           "complete": true,
2026-06-23T10:05:47.0735768Z           "evidence": [
2026-06-23T10:05:47.0735855Z             {
2026-06-23T10:05:47.0735980Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T10:05:47.0736069Z               "line": 77
2026-06-23T10:05:47.0736155Z             },
2026-06-23T10:05:47.0736242Z             {
2026-06-23T10:05:47.0736370Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T10:05:47.0736456Z               "line": 183
2026-06-23T10:05:47.0736533Z             },
2026-06-23T10:05:47.0736618Z             {
2026-06-23T10:05:47.0736751Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0736847Z               "line": 222
2026-06-23T10:05:47.0736937Z             },
2026-06-23T10:05:47.0737018Z             {
2026-06-23T10:05:47.0737134Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T10:05:47.0737224Z               "line": 71
2026-06-23T10:05:47.0737314Z             },
2026-06-23T10:05:47.0737405Z             {
2026-06-23T10:05:47.0737520Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0737614Z               "line": 187
2026-06-23T10:05:47.0737705Z             }
2026-06-23T10:05:47.0737787Z           ]
2026-06-23T10:05:47.0737877Z         },
2026-06-23T10:05:47.0737963Z         "int": {
2026-06-23T10:05:47.0738059Z           "complete": true,
2026-06-23T10:05:47.0738140Z           "evidence": [
2026-06-23T10:05:47.0738224Z             {
2026-06-23T10:05:47.0738357Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-23T10:05:47.0738458Z               "line": 25
2026-06-23T10:05:47.0738530Z             }
2026-06-23T10:05:47.0738614Z           ]
2026-06-23T10:05:47.0738700Z         },
2026-06-23T10:05:47.0738792Z         "unit": {
2026-06-23T10:05:47.0738892Z           "complete": true,
2026-06-23T10:05:47.0739054Z           "evidence": [
2026-06-23T10:05:47.0739140Z             {
2026-06-23T10:05:47.0739262Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T10:05:47.0739354Z               "line": 347
2026-06-23T10:05:47.0739459Z             },
2026-06-23T10:05:47.0739545Z             {
2026-06-23T10:05:47.0739779Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T10:05:47.0739869Z               "line": 397
2026-06-23T10:05:47.0739955Z             },
2026-06-23T10:05:47.0740032Z             {
2026-06-23T10:05:47.0740164Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0740260Z               "line": 1291
2026-06-23T10:05:47.0740347Z             },
2026-06-23T10:05:47.0740427Z             {
2026-06-23T10:05:47.0740550Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T10:05:47.0740640Z               "line": 184
2026-06-23T10:05:47.0740814Z             },
2026-06-23T10:05:47.0740904Z             {
2026-06-23T10:05:47.0741029Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T10:05:47.0741115Z               "line": 208
2026-06-23T10:05:47.0741200Z             },
2026-06-23T10:05:47.0741287Z             {
2026-06-23T10:05:47.0741401Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T10:05:47.0741491Z               "line": 236
2026-06-23T10:05:47.0741572Z             },
2026-06-23T10:05:47.0741655Z             {
2026-06-23T10:05:47.0741773Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T10:05:47.0741868Z               "line": 1012
2026-06-23T10:05:47.0741950Z             }
2026-06-23T10:05:47.0742035Z           ]
2026-06-23T10:05:47.0742120Z         }
2026-06-23T10:05:47.0742221Z       }
2026-06-23T10:05:47.0742308Z     },
2026-06-23T10:05:47.0742388Z     {
2026-06-23T10:05:47.0742483Z       "id": "REQ-SHELL-1",
2026-06-23T10:05:47.0743336Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-23T10:05:47.0743450Z       "requiredStages": [
2026-06-23T10:05:47.0743531Z         "impl",
2026-06-23T10:05:47.0743621Z         "unit",
2026-06-23T10:05:47.0743705Z         "int"
2026-06-23T10:05:47.0743785Z       ],
2026-06-23T10:05:47.0743882Z       "stages": {
2026-06-23T10:05:47.0743968Z         "doc": {
2026-06-23T10:05:47.0744063Z           "complete": false,
2026-06-23T10:05:47.0744158Z           "evidence": []
2026-06-23T10:05:47.0744245Z         },
2026-06-23T10:05:47.0744325Z         "impl": {
2026-06-23T10:05:47.0744415Z           "complete": true,
2026-06-23T10:05:47.0744512Z           "evidence": [
2026-06-23T10:05:47.0744597Z             {
2026-06-23T10:05:47.0744725Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:47.0744832Z               "line": 189
2026-06-23T10:05:47.0744916Z             },
2026-06-23T10:05:47.0745007Z             {
2026-06-23T10:05:47.0745132Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:47.0745231Z               "line": 268
2026-06-23T10:05:47.0745307Z             },
2026-06-23T10:05:47.0745388Z             {
2026-06-23T10:05:47.0745527Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T10:05:47.0745617Z               "line": 27
2026-06-23T10:05:47.0745703Z             },
2026-06-23T10:05:47.0745781Z             {
2026-06-23T10:05:47.0745912Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T10:05:47.0746002Z               "line": 52
2026-06-23T10:05:47.0746103Z             },
2026-06-23T10:05:47.0746197Z             {
2026-06-23T10:05:47.0746314Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T10:05:47.0746410Z               "line": 144
2026-06-23T10:05:47.0746497Z             },
2026-06-23T10:05:47.0746587Z             {
2026-06-23T10:05:47.0746706Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T10:05:47.0746802Z               "line": 176
2026-06-23T10:05:47.0746887Z             },
2026-06-23T10:05:47.0746972Z             {
2026-06-23T10:05:47.0747097Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0747292Z               "line": 22
2026-06-23T10:05:47.0747384Z             },
2026-06-23T10:05:47.0747464Z             {
2026-06-23T10:05:47.0747583Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0747674Z               "line": 65
2026-06-23T10:05:47.0747760Z             },
2026-06-23T10:05:47.0747850Z             {
2026-06-23T10:05:47.0747970Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0748056Z               "line": 76
2026-06-23T10:05:47.0748136Z             },
2026-06-23T10:05:47.0748232Z             {
2026-06-23T10:05:47.0748352Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0748518Z               "line": 151
2026-06-23T10:05:47.0748614Z             },
2026-06-23T10:05:47.0748695Z             {
2026-06-23T10:05:47.0748818Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0748917Z               "line": 210
2026-06-23T10:05:47.0749085Z             },
2026-06-23T10:05:47.0749179Z             {
2026-06-23T10:05:47.0749295Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0749394Z               "line": 261
2026-06-23T10:05:47.0749470Z             },
2026-06-23T10:05:47.0749556Z             {
2026-06-23T10:05:47.0749681Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0749762Z               "line": 283
2026-06-23T10:05:47.0749851Z             },
2026-06-23T10:05:47.0749924Z             {
2026-06-23T10:05:47.0750052Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0750138Z               "line": 296
2026-06-23T10:05:47.0750239Z             },
2026-06-23T10:05:47.0750330Z             {
2026-06-23T10:05:47.0750448Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:47.0750544Z               "line": 217
2026-06-23T10:05:47.0750625Z             },
2026-06-23T10:05:47.0750705Z             {
2026-06-23T10:05:47.0750825Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:47.0750921Z               "line": 233
2026-06-23T10:05:47.0751010Z             },
2026-06-23T10:05:47.0751091Z             {
2026-06-23T10:05:47.0751219Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T10:05:47.0751305Z               "line": 41
2026-06-23T10:05:47.0751388Z             },
2026-06-23T10:05:47.0751479Z             {
2026-06-23T10:05:47.0751595Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T10:05:47.0751694Z               "line": 222
2026-06-23T10:05:47.0751779Z             },
2026-06-23T10:05:47.0751870Z             {
2026-06-23T10:05:47.0751990Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T10:05:47.0752094Z               "line": 173
2026-06-23T10:05:47.0752176Z             },
2026-06-23T10:05:47.0752257Z             {
2026-06-23T10:05:47.0752370Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T10:05:47.0752457Z               "line": 354
2026-06-23T10:05:47.0752544Z             },
2026-06-23T10:05:47.0752634Z             {
2026-06-23T10:05:47.0752748Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T10:05:47.0752834Z               "line": 419
2026-06-23T10:05:47.0752919Z             },
2026-06-23T10:05:47.0753010Z             {
2026-06-23T10:05:47.0753130Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.0753230Z               "line": 333
2026-06-23T10:05:47.0753306Z             },
2026-06-23T10:05:47.0753392Z             {
2026-06-23T10:05:47.0753502Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0753586Z               "line": 7385
2026-06-23T10:05:47.0753682Z             },
2026-06-23T10:05:47.0753760Z             {
2026-06-23T10:05:47.0753864Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0753953Z               "line": 7535
2026-06-23T10:05:47.0754043Z             },
2026-06-23T10:05:47.0754134Z             {
2026-06-23T10:05:47.0754237Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0754442Z               "line": 7711
2026-06-23T10:05:47.0754524Z             }
2026-06-23T10:05:47.0754613Z           ]
2026-06-23T10:05:47.0754699Z         },
2026-06-23T10:05:47.0754791Z         "int": {
2026-06-23T10:05:47.0754895Z           "complete": true,
2026-06-23T10:05:47.0754976Z           "evidence": [
2026-06-23T10:05:47.0755063Z             {
2026-06-23T10:05:47.0755196Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T10:05:47.0755300Z               "line": 717
2026-06-23T10:05:47.0755377Z             },
2026-06-23T10:05:47.0755467Z             {
2026-06-23T10:05:47.0755605Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-23T10:05:47.0755820Z               "line": 8
2026-06-23T10:05:47.0755915Z             },
2026-06-23T10:05:47.0755997Z             {
2026-06-23T10:05:47.0756120Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-23T10:05:47.0756211Z               "line": 49
2026-06-23T10:05:47.0756307Z             },
2026-06-23T10:05:47.0756402Z             {
2026-06-23T10:05:47.0756525Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0756610Z               "line": 780
2026-06-23T10:05:47.0756692Z             },
2026-06-23T10:05:47.0756775Z             {
2026-06-23T10:05:47.0756889Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0756985Z               "line": 1215
2026-06-23T10:05:47.0757072Z             },
2026-06-23T10:05:47.0757156Z             {
2026-06-23T10:05:47.0757285Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-23T10:05:47.0757372Z               "line": 17
2026-06-23T10:05:47.0757466Z             },
2026-06-23T10:05:47.0757547Z             {
2026-06-23T10:05:47.0757658Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-23T10:05:47.0757762Z               "line": 14
2026-06-23T10:05:47.0757838Z             }
2026-06-23T10:05:47.0757930Z           ]
2026-06-23T10:05:47.0758005Z         },
2026-06-23T10:05:47.0758096Z         "unit": {
2026-06-23T10:05:47.0758186Z           "complete": true,
2026-06-23T10:05:47.0758264Z           "evidence": [
2026-06-23T10:05:47.0760942Z             {
2026-06-23T10:05:47.0761104Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T10:05:47.0761209Z               "line": 246
2026-06-23T10:05:47.0761294Z             },
2026-06-23T10:05:47.0761380Z             {
2026-06-23T10:05:47.0761514Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T10:05:47.0761604Z               "line": 279
2026-06-23T10:05:47.0761694Z             },
2026-06-23T10:05:47.0761780Z             {
2026-06-23T10:05:47.0761921Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T10:05:47.0762006Z               "line": 319
2026-06-23T10:05:47.0762092Z             },
2026-06-23T10:05:47.0762183Z             {
2026-06-23T10:05:47.0762301Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0762392Z               "line": 601
2026-06-23T10:05:47.0762484Z             },
2026-06-23T10:05:47.0762559Z             {
2026-06-23T10:05:47.0762668Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0762770Z               "line": 674
2026-06-23T10:05:47.0762850Z             },
2026-06-23T10:05:47.0762935Z             {
2026-06-23T10:05:47.0763056Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0763142Z               "line": 818
2026-06-23T10:05:47.0763241Z             },
2026-06-23T10:05:47.0763322Z             {
2026-06-23T10:05:47.0763433Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:47.0763532Z               "line": 595
2026-06-23T10:05:47.0763617Z             },
2026-06-23T10:05:47.0763709Z             {
2026-06-23T10:05:47.0763832Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T10:05:47.0763913Z               "line": 399
2026-06-23T10:05:47.0763991Z             },
2026-06-23T10:05:47.0764081Z             {
2026-06-23T10:05:47.0764195Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0764420Z               "line": 10514
2026-06-23T10:05:47.0764499Z             },
2026-06-23T10:05:47.0764580Z             {
2026-06-23T10:05:47.0764689Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0764783Z               "line": 10838
2026-06-23T10:05:47.0764863Z             },
2026-06-23T10:05:47.0764945Z             {
2026-06-23T10:05:47.0765050Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0765145Z               "line": 11255
2026-06-23T10:05:47.0765226Z             }
2026-06-23T10:05:47.0765313Z           ]
2026-06-23T10:05:47.0765488Z         }
2026-06-23T10:05:47.0765574Z       }
2026-06-23T10:05:47.0765656Z     },
2026-06-23T10:05:47.0765742Z     {
2026-06-23T10:05:47.0765841Z       "id": "REQ-SHELL-2",
2026-06-23T10:05:47.0767303Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-23T10:05:47.0767402Z       "requiredStages": [
2026-06-23T10:05:47.0767492Z         "impl",
2026-06-23T10:05:47.0767579Z         "unit",
2026-06-23T10:05:47.0767665Z         "int"
2026-06-23T10:05:47.0767745Z       ],
2026-06-23T10:05:47.0767826Z       "stages": {
2026-06-23T10:05:47.0767912Z         "doc": {
2026-06-23T10:05:47.0768021Z           "complete": false,
2026-06-23T10:05:47.0768112Z           "evidence": []
2026-06-23T10:05:47.0768194Z         },
2026-06-23T10:05:47.0768279Z         "impl": {
2026-06-23T10:05:47.0768379Z           "complete": true,
2026-06-23T10:05:47.0768461Z           "evidence": [
2026-06-23T10:05:47.0768547Z             {
2026-06-23T10:05:47.0768675Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:47.0768765Z               "line": 217
2026-06-23T10:05:47.0768843Z             },
2026-06-23T10:05:47.0768937Z             {
2026-06-23T10:05:47.0769134Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T10:05:47.0769228Z               "line": 403
2026-06-23T10:05:47.0769309Z             },
2026-06-23T10:05:47.0769405Z             {
2026-06-23T10:05:47.0769524Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T10:05:47.0769604Z               "line": 250
2026-06-23T10:05:47.0769691Z             },
2026-06-23T10:05:47.0769773Z             {
2026-06-23T10:05:47.0769900Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:47.0769999Z               "line": 611
2026-06-23T10:05:47.0770085Z             },
2026-06-23T10:05:47.0770167Z             {
2026-06-23T10:05:47.0770290Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:47.0770386Z               "line": 30
2026-06-23T10:05:47.0770472Z             },
2026-06-23T10:05:47.0770562Z             {
2026-06-23T10:05:47.0770686Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:47.0770772Z               "line": 409
2026-06-23T10:05:47.0770863Z             },
2026-06-23T10:05:47.0770948Z             {
2026-06-23T10:05:47.0771064Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:47.0771144Z               "line": 445
2026-06-23T10:05:47.0771244Z             },
2026-06-23T10:05:47.0771335Z             {
2026-06-23T10:05:47.0771450Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:47.0771545Z               "line": 660
2026-06-23T10:05:47.0771625Z             },
2026-06-23T10:05:47.0771708Z             {
2026-06-23T10:05:47.0771825Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:47.0771921Z               "line": 348
2026-06-23T10:05:47.0772008Z             },
2026-06-23T10:05:47.0772084Z             {
2026-06-23T10:05:47.0772201Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T10:05:47.0772392Z               "line": 115
2026-06-23T10:05:47.0772476Z             },
2026-06-23T10:05:47.0772561Z             {
2026-06-23T10:05:47.0772685Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0772772Z               "line": 120
2026-06-23T10:05:47.0772857Z             },
2026-06-23T10:05:47.0772947Z             {
2026-06-23T10:05:47.0773063Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0773162Z               "line": 376
2026-06-23T10:05:47.0773253Z             },
2026-06-23T10:05:47.0773448Z             {
2026-06-23T10:05:47.0773577Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0773664Z               "line": 502
2026-06-23T10:05:47.0773744Z             },
2026-06-23T10:05:47.0773825Z             {
2026-06-23T10:05:47.0773941Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T10:05:47.0774045Z               "line": 24
2026-06-23T10:05:47.0774135Z             },
2026-06-23T10:05:47.0774221Z             {
2026-06-23T10:05:47.0774336Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T10:05:47.0774441Z               "line": 76
2026-06-23T10:05:47.0774527Z             },
2026-06-23T10:05:47.0774613Z             {
2026-06-23T10:05:47.0774721Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T10:05:47.0774802Z               "line": 154
2026-06-23T10:05:47.0774895Z             },
2026-06-23T10:05:47.0774980Z             {
2026-06-23T10:05:47.0775102Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T10:05:47.0775188Z               "line": 177
2026-06-23T10:05:47.0775278Z             },
2026-06-23T10:05:47.0775372Z             {
2026-06-23T10:05:47.0775476Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T10:05:47.0775577Z               "line": 273
2026-06-23T10:05:47.0775658Z             },
2026-06-23T10:05:47.0775747Z             {
2026-06-23T10:05:47.0775868Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T10:05:47.0775963Z               "line": 456
2026-06-23T10:05:47.0776053Z             },
2026-06-23T10:05:47.0776134Z             {
2026-06-23T10:05:47.0776259Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T10:05:47.0776354Z               "line": 538
2026-06-23T10:05:47.0776444Z             },
2026-06-23T10:05:47.0776531Z             {
2026-06-23T10:05:47.0776664Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-23T10:05:47.0776750Z               "line": 27
2026-06-23T10:05:47.0776846Z             },
2026-06-23T10:05:47.0776935Z             {
2026-06-23T10:05:47.0777045Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-23T10:05:47.0777137Z               "line": 48
2026-06-23T10:05:47.0777218Z             },
2026-06-23T10:05:47.0777307Z             {
2026-06-23T10:05:47.0777433Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.0777528Z               "line": 517
2026-06-23T10:05:47.0777616Z             },
2026-06-23T10:05:47.0777702Z             {
2026-06-23T10:05:47.0777812Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0777901Z               "line": 2275
2026-06-23T10:05:47.0777976Z             },
2026-06-23T10:05:47.0778057Z             {
2026-06-23T10:05:47.0778163Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0778253Z               "line": 7399
2026-06-23T10:05:47.0778334Z             },
2026-06-23T10:05:47.0778430Z             {
2026-06-23T10:05:47.0778520Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0778610Z               "line": 7460
2026-06-23T10:05:47.0778706Z             },
2026-06-23T10:05:47.0778788Z             {
2026-06-23T10:05:47.0778897Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0779064Z               "line": 7488
2026-06-23T10:05:47.0779149Z             },
2026-06-23T10:05:47.0779244Z             {
2026-06-23T10:05:47.0779502Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0779602Z               "line": 7542
2026-06-23T10:05:47.0779684Z             },
2026-06-23T10:05:47.0779770Z             {
2026-06-23T10:05:47.0779865Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0779960Z               "line": 7797
2026-06-23T10:05:47.0780057Z             },
2026-06-23T10:05:47.0780140Z             {
2026-06-23T10:05:47.0780246Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0780338Z               "line": 7857
2026-06-23T10:05:47.0780414Z             },
2026-06-23T10:05:47.0780498Z             {
2026-06-23T10:05:47.0780718Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T10:05:47.0780803Z               "line": 298
2026-06-23T10:05:47.0780884Z             },
2026-06-23T10:05:47.0780965Z             {
2026-06-23T10:05:47.0781075Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T10:05:47.0781170Z               "line": 339
2026-06-23T10:05:47.0781251Z             }
2026-06-23T10:05:47.0781347Z           ]
2026-06-23T10:05:47.0781428Z         },
2026-06-23T10:05:47.0781518Z         "int": {
2026-06-23T10:05:47.0781614Z           "complete": true,
2026-06-23T10:05:47.0781699Z           "evidence": [
2026-06-23T10:05:47.0781794Z             {
2026-06-23T10:05:47.0781919Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T10:05:47.0782014Z               "line": 710
2026-06-23T10:05:47.0782095Z             },
2026-06-23T10:05:47.0782185Z             {
2026-06-23T10:05:47.0782310Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0782405Z               "line": 780
2026-06-23T10:05:47.0782481Z             },
2026-06-23T10:05:47.0782568Z             {
2026-06-23T10:05:47.0782695Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0782795Z               "line": 1215
2026-06-23T10:05:47.0782880Z             },
2026-06-23T10:05:47.0782961Z             {
2026-06-23T10:05:47.0783098Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-23T10:05:47.0783183Z               "line": 18
2026-06-23T10:05:47.0783270Z             }
2026-06-23T10:05:47.0783355Z           ]
2026-06-23T10:05:47.0783445Z         },
2026-06-23T10:05:47.0783537Z         "unit": {
2026-06-23T10:05:47.0783632Z           "complete": true,
2026-06-23T10:05:47.0783708Z           "evidence": [
2026-06-23T10:05:47.0783793Z             {
2026-06-23T10:05:47.0783914Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:47.0784008Z               "line": 744
2026-06-23T10:05:47.0784093Z             },
2026-06-23T10:05:47.0784181Z             {
2026-06-23T10:05:47.0784304Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T10:05:47.0784390Z               "line": 796
2026-06-23T10:05:47.0784471Z             },
2026-06-23T10:05:47.0784562Z             {
2026-06-23T10:05:47.0784686Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0784777Z               "line": 707
2026-06-23T10:05:47.0784872Z             },
2026-06-23T10:05:47.0784962Z             {
2026-06-23T10:05:47.0785072Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0785168Z               "line": 756
2026-06-23T10:05:47.0785253Z             },
2026-06-23T10:05:47.0785344Z             {
2026-06-23T10:05:47.0785465Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0785549Z               "line": 780
2026-06-23T10:05:47.0785634Z             },
2026-06-23T10:05:47.0785719Z             {
2026-06-23T10:05:47.0785843Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T10:05:47.0785951Z               "line": 603
2026-06-23T10:05:47.0786036Z             },
2026-06-23T10:05:47.0786127Z             {
2026-06-23T10:05:47.0786232Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T10:05:47.0786322Z               "line": 624
2026-06-23T10:05:47.0786409Z             },
2026-06-23T10:05:47.0786495Z             {
2026-06-23T10:05:47.0786724Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T10:05:47.0786819Z               "line": 660
2026-06-23T10:05:47.0786914Z             },
2026-06-23T10:05:47.0787000Z             {
2026-06-23T10:05:47.0787115Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T10:05:47.0787200Z               "line": 714
2026-06-23T10:05:47.0787285Z             },
2026-06-23T10:05:47.0787377Z             {
2026-06-23T10:05:47.0787496Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T10:05:47.0787590Z               "line": 732
2026-06-23T10:05:47.0787744Z             },
2026-06-23T10:05:47.0787838Z             {
2026-06-23T10:05:47.0787959Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T10:05:47.0788045Z               "line": 766
2026-06-23T10:05:47.0788130Z             },
2026-06-23T10:05:47.0788214Z             {
2026-06-23T10:05:47.0788334Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T10:05:47.0788428Z               "line": 841
2026-06-23T10:05:47.0788508Z             },
2026-06-23T10:05:47.0788593Z             {
2026-06-23T10:05:47.0788718Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-23T10:05:47.0788841Z               "line": 85
2026-06-23T10:05:47.0789085Z             },
2026-06-23T10:05:47.0789203Z             {
2026-06-23T10:05:47.0789348Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0789581Z               "line": 9438
2026-06-23T10:05:47.0789700Z             },
2026-06-23T10:05:47.0789818Z             {
2026-06-23T10:05:47.0789920Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0790025Z               "line": 10592
2026-06-23T10:05:47.0790129Z             },
2026-06-23T10:05:47.0790210Z             {
2026-06-23T10:05:47.0790321Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0790410Z               "line": 10662
2026-06-23T10:05:47.0790501Z             },
2026-06-23T10:05:47.0790588Z             {
2026-06-23T10:05:47.0790682Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0790773Z               "line": 10700
2026-06-23T10:05:47.0790855Z             }
2026-06-23T10:05:47.0790941Z           ]
2026-06-23T10:05:47.0791034Z         }
2026-06-23T10:05:47.0791138Z       }
2026-06-23T10:05:47.0791225Z     },
2026-06-23T10:05:47.0791307Z     {
2026-06-23T10:05:47.0791401Z       "id": "REQ-SHELL-3",
2026-06-23T10:05:47.0793195Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-23T10:05:47.0793317Z       "requiredStages": [
2026-06-23T10:05:47.0793407Z         "impl",
2026-06-23T10:05:47.0793494Z         "unit",
2026-06-23T10:05:47.0793577Z         "int"
2026-06-23T10:05:47.0793663Z       ],
2026-06-23T10:05:47.0793763Z       "stages": {
2026-06-23T10:05:47.0793845Z         "doc": {
2026-06-23T10:05:47.0793939Z           "complete": false,
2026-06-23T10:05:47.0794034Z           "evidence": []
2026-06-23T10:05:47.0794121Z         },
2026-06-23T10:05:47.0794207Z         "impl": {
2026-06-23T10:05:47.0794297Z           "complete": true,
2026-06-23T10:05:47.0794388Z           "evidence": [
2026-06-23T10:05:47.0794474Z             {
2026-06-23T10:05:47.0794597Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:47.0794683Z               "line": 229
2026-06-23T10:05:47.0794770Z             },
2026-06-23T10:05:47.0794850Z             {
2026-06-23T10:05:47.0794974Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T10:05:47.0795203Z               "line": 36
2026-06-23T10:05:47.0795298Z             },
2026-06-23T10:05:47.0795376Z             {
2026-06-23T10:05:47.0795498Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T10:05:47.0795584Z               "line": 137
2026-06-23T10:05:47.0795671Z             },
2026-06-23T10:05:47.0795752Z             {
2026-06-23T10:05:47.0795870Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T10:05:47.0795962Z               "line": 153
2026-06-23T10:05:47.0796048Z             },
2026-06-23T10:05:47.0796128Z             {
2026-06-23T10:05:47.0796346Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T10:05:47.0796449Z               "line": 165
2026-06-23T10:05:47.0796539Z             },
2026-06-23T10:05:47.0796620Z             {
2026-06-23T10:05:47.0796745Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T10:05:47.0796835Z               "line": 242
2026-06-23T10:05:47.0796925Z             },
2026-06-23T10:05:47.0797012Z             {
2026-06-23T10:05:47.0797135Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T10:05:47.0797230Z               "line": 267
2026-06-23T10:05:47.0797317Z             },
2026-06-23T10:05:47.0797403Z             {
2026-06-23T10:05:47.0797516Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T10:05:47.0797608Z               "line": 293
2026-06-23T10:05:47.0797684Z             },
2026-06-23T10:05:47.0797765Z             {
2026-06-23T10:05:47.0797889Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-23T10:05:47.0797980Z               "line": 51
2026-06-23T10:05:47.0798075Z             },
2026-06-23T10:05:47.0798156Z             {
2026-06-23T10:05:47.0798267Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:47.0798356Z               "line": 333
2026-06-23T10:05:47.0798442Z             },
2026-06-23T10:05:47.0798528Z             {
2026-06-23T10:05:47.0798643Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:47.0798742Z               "line": 373
2026-06-23T10:05:47.0798827Z             },
2026-06-23T10:05:47.0798913Z             {
2026-06-23T10:05:47.0799144Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:47.0799235Z               "line": 602
2026-06-23T10:05:47.0799312Z             },
2026-06-23T10:05:47.0799430Z             {
2026-06-23T10:05:47.0799545Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T10:05:47.0799626Z               "line": 132
2026-06-23T10:05:47.0799716Z             },
2026-06-23T10:05:47.0799793Z             {
2026-06-23T10:05:47.0799912Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0800013Z               "line": 450
2026-06-23T10:05:47.0800083Z             },
2026-06-23T10:05:47.0800166Z             {
2026-06-23T10:05:47.0800284Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T10:05:47.0800374Z               "line": 74
2026-06-23T10:05:47.0800451Z             },
2026-06-23T10:05:47.0800538Z             {
2026-06-23T10:05:47.0800661Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0800737Z               "line": 652
2026-06-23T10:05:47.0800824Z             },
2026-06-23T10:05:47.0800904Z             {
2026-06-23T10:05:47.0801027Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.0801125Z               "line": 396
2026-06-23T10:05:47.0801205Z             },
2026-06-23T10:05:47.0801289Z             {
2026-06-23T10:05:47.0801396Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0801496Z               "line": 7583
2026-06-23T10:05:47.0801576Z             }
2026-06-23T10:05:47.0801661Z           ]
2026-06-23T10:05:47.0801742Z         },
2026-06-23T10:05:47.0801824Z         "int": {
2026-06-23T10:05:47.0801914Z           "complete": true,
2026-06-23T10:05:47.0802004Z           "evidence": [
2026-06-23T10:05:47.0802095Z             {
2026-06-23T10:05:47.0802215Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0802415Z               "line": 1264
2026-06-23T10:05:47.0802505Z             },
2026-06-23T10:05:47.0802586Z             {
2026-06-23T10:05:47.0802696Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-23T10:05:47.0802787Z               "line": 17
2026-06-23T10:05:47.0802877Z             }
2026-06-23T10:05:47.0802962Z           ]
2026-06-23T10:05:47.0803054Z         },
2026-06-23T10:05:47.0803135Z         "unit": {
2026-06-23T10:05:47.0803216Z           "complete": true,
2026-06-23T10:05:47.0803315Z           "evidence": [
2026-06-23T10:05:47.0803496Z             {
2026-06-23T10:05:47.0803621Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T10:05:47.0803708Z               "line": 311
2026-06-23T10:05:47.0803792Z             },
2026-06-23T10:05:47.0803877Z             {
2026-06-23T10:05:47.0803987Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T10:05:47.0804082Z               "line": 325
2026-06-23T10:05:47.0804170Z             },
2026-06-23T10:05:47.0804256Z             {
2026-06-23T10:05:47.0804366Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T10:05:47.0804448Z               "line": 343
2026-06-23T10:05:47.0804532Z             },
2026-06-23T10:05:47.0804614Z             {
2026-06-23T10:05:47.0804734Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T10:05:47.0804814Z               "line": 364
2026-06-23T10:05:47.0804899Z             },
2026-06-23T10:05:47.0804977Z             {
2026-06-23T10:05:47.0805101Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T10:05:47.0805200Z               "line": 376
2026-06-23T10:05:47.0805282Z             },
2026-06-23T10:05:47.0805367Z             {
2026-06-23T10:05:47.0805472Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:47.0805567Z               "line": 897
2026-06-23T10:05:47.0805645Z             },
2026-06-23T10:05:47.0805734Z             {
2026-06-23T10:05:47.0805863Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:47.0805950Z               "line": 957
2026-06-23T10:05:47.0806025Z             },
2026-06-23T10:05:47.0806111Z             {
2026-06-23T10:05:47.0806236Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T10:05:47.0806326Z               "line": 338
2026-06-23T10:05:47.0806416Z             },
2026-06-23T10:05:47.0806507Z             {
2026-06-23T10:05:47.0806613Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T10:05:47.0806702Z               "line": 769
2026-06-23T10:05:47.0806782Z             },
2026-06-23T10:05:47.0806882Z             {
2026-06-23T10:05:47.0806991Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0807085Z               "line": 10374
2026-06-23T10:05:47.0807171Z             }
2026-06-23T10:05:47.0807252Z           ]
2026-06-23T10:05:47.0807334Z         }
2026-06-23T10:05:47.0807419Z       }
2026-06-23T10:05:47.0807505Z     },
2026-06-23T10:05:47.0807591Z     {
2026-06-23T10:05:47.0807695Z       "id": "REQ-SHELL-4",
2026-06-23T10:05:47.0809572Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-23T10:05:47.0809666Z       "requiredStages": [
2026-06-23T10:05:47.0809757Z         "doc",
2026-06-23T10:05:47.0809844Z         "impl",
2026-06-23T10:05:47.0809924Z         "unit",
2026-06-23T10:05:47.0810009Z         "int"
2026-06-23T10:05:47.0810091Z       ],
2026-06-23T10:05:47.0810187Z       "stages": {
2026-06-23T10:05:47.0810386Z         "doc": {
2026-06-23T10:05:47.0810482Z           "complete": true,
2026-06-23T10:05:47.0810577Z           "evidence": [
2026-06-23T10:05:47.0810662Z             {
2026-06-23T10:05:47.0810763Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0810854Z               "line": 294
2026-06-23T10:05:47.0810939Z             },
2026-06-23T10:05:47.0811016Z             {
2026-06-23T10:05:47.0811249Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-23T10:05:47.0811345Z               "line": 88
2026-06-23T10:05:47.0811427Z             }
2026-06-23T10:05:47.0811611Z           ]
2026-06-23T10:05:47.0811699Z         },
2026-06-23T10:05:47.0811788Z         "impl": {
2026-06-23T10:05:47.0811879Z           "complete": true,
2026-06-23T10:05:47.0811975Z           "evidence": [
2026-06-23T10:05:47.0812056Z             {
2026-06-23T10:05:47.0812169Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:47.0812259Z               "line": 243
2026-06-23T10:05:47.0812345Z             },
2026-06-23T10:05:47.0812437Z             {
2026-06-23T10:05:47.0812559Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-23T10:05:47.0812651Z               "line": 61
2026-06-23T10:05:47.0812746Z             },
2026-06-23T10:05:47.0812822Z             {
2026-06-23T10:05:47.0812946Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:47.0813028Z               "line": 218
2026-06-23T10:05:47.0813114Z             },
2026-06-23T10:05:47.0813198Z             {
2026-06-23T10:05:47.0813318Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:47.0813417Z               "line": 245
2026-06-23T10:05:47.0813503Z             },
2026-06-23T10:05:47.0813585Z             {
2026-06-23T10:05:47.0813700Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:47.0813799Z               "line": 566
2026-06-23T10:05:47.0813881Z             },
2026-06-23T10:05:47.0813962Z             {
2026-06-23T10:05:47.0814085Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:47.0814171Z               "line": 1141
2026-06-23T10:05:47.0814263Z             },
2026-06-23T10:05:47.0814334Z             {
2026-06-23T10:05:47.0814452Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:47.0814542Z               "line": 1153
2026-06-23T10:05:47.0814623Z             },
2026-06-23T10:05:47.0814712Z             {
2026-06-23T10:05:47.0814821Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:47.0814912Z               "line": 1194
2026-06-23T10:05:47.0814999Z             },
2026-06-23T10:05:47.0815083Z             {
2026-06-23T10:05:47.0815208Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0815294Z               "line": 458
2026-06-23T10:05:47.0815379Z             },
2026-06-23T10:05:47.0815465Z             {
2026-06-23T10:05:47.0815585Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T10:05:47.0815675Z               "line": 44
2026-06-23T10:05:47.0815750Z             },
2026-06-23T10:05:47.0815833Z             {
2026-06-23T10:05:47.0815951Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T10:05:47.0816046Z               "line": 208
2026-06-23T10:05:47.0816132Z             },
2026-06-23T10:05:47.0816224Z             {
2026-06-23T10:05:47.0816342Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T10:05:47.0816433Z               "line": 227
2026-06-23T10:05:47.0816525Z             },
2026-06-23T10:05:47.0816609Z             {
2026-06-23T10:05:47.0816733Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T10:05:47.0816830Z               "line": 253
2026-06-23T10:05:47.0816914Z             },
2026-06-23T10:05:47.0817000Z             {
2026-06-23T10:05:47.0817130Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T10:05:47.0817225Z               "line": 272
2026-06-23T10:05:47.0817309Z             },
2026-06-23T10:05:47.0817500Z             {
2026-06-23T10:05:47.0817612Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T10:05:47.0817697Z               "line": 392
2026-06-23T10:05:47.0817784Z             },
2026-06-23T10:05:47.0817880Z             {
2026-06-23T10:05:47.0817998Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T10:05:47.0818084Z               "line": 421
2026-06-23T10:05:47.0818170Z             },
2026-06-23T10:05:47.0818265Z             {
2026-06-23T10:05:47.0818394Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T10:05:47.0818494Z               "line": 439
2026-06-23T10:05:47.0818651Z             },
2026-06-23T10:05:47.0818743Z             {
2026-06-23T10:05:47.0818861Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T10:05:47.0819029Z               "line": 458
2026-06-23T10:05:47.0819119Z             },
2026-06-23T10:05:47.0819209Z             {
2026-06-23T10:05:47.0819348Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T10:05:47.0819486Z               "line": 486
2026-06-23T10:05:47.0819567Z             },
2026-06-23T10:05:47.0819649Z             {
2026-06-23T10:05:47.0819773Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0819857Z               "line": 671
2026-06-23T10:05:47.0819952Z             },
2026-06-23T10:05:47.0820033Z             {
2026-06-23T10:05:47.0820146Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0820226Z               "line": 876
2026-06-23T10:05:47.0820307Z             },
2026-06-23T10:05:47.0820423Z             {
2026-06-23T10:05:47.0820550Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.0820631Z               "line": 435
2026-06-23T10:05:47.0820718Z             },
2026-06-23T10:05:47.0820790Z             {
2026-06-23T10:05:47.0820903Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0821000Z               "line": 7639
2026-06-23T10:05:47.0821080Z             }
2026-06-23T10:05:47.0821161Z           ]
2026-06-23T10:05:47.0821247Z         },
2026-06-23T10:05:47.0821352Z         "int": {
2026-06-23T10:05:47.0821466Z           "complete": true,
2026-06-23T10:05:47.0821557Z           "evidence": [
2026-06-23T10:05:47.0821639Z             {
2026-06-23T10:05:47.0821762Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-23T10:05:47.0821847Z               "line": 18
2026-06-23T10:05:47.0821940Z             }
2026-06-23T10:05:47.0822024Z           ]
2026-06-23T10:05:47.0822105Z         },
2026-06-23T10:05:47.0822191Z         "unit": {
2026-06-23T10:05:47.0822306Z           "complete": true,
2026-06-23T10:05:47.0822405Z           "evidence": [
2026-06-23T10:05:47.0822491Z             {
2026-06-23T10:05:47.0822611Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:47.0822696Z               "line": 1391
2026-06-23T10:05:47.0822776Z             },
2026-06-23T10:05:47.0822867Z             {
2026-06-23T10:05:47.0822982Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:47.0823082Z               "line": 1420
2026-06-23T10:05:47.0823163Z             },
2026-06-23T10:05:47.0823283Z             {
2026-06-23T10:05:47.0823415Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T10:05:47.0823506Z               "line": 504
2026-06-23T10:05:47.0823583Z             },
2026-06-23T10:05:47.0823664Z             {
2026-06-23T10:05:47.0823782Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T10:05:47.0823869Z               "line": 514
2026-06-23T10:05:47.0823950Z             },
2026-06-23T10:05:47.0824035Z             {
2026-06-23T10:05:47.0824145Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T10:05:47.0824246Z               "line": 531
2026-06-23T10:05:47.0824326Z             },
2026-06-23T10:05:47.0824407Z             {
2026-06-23T10:05:47.0824522Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T10:05:47.0824608Z               "line": 543
2026-06-23T10:05:47.0824809Z             },
2026-06-23T10:05:47.0824889Z             {
2026-06-23T10:05:47.0825002Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T10:05:47.0825087Z               "line": 555
2026-06-23T10:05:47.0825198Z             },
2026-06-23T10:05:47.0825282Z             {
2026-06-23T10:05:47.0825395Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.0825481Z               "line": 1192
2026-06-23T10:05:47.0825569Z             },
2026-06-23T10:05:47.0825652Z             {
2026-06-23T10:05:47.0825753Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T10:05:47.0825953Z               "line": 776
2026-06-23T10:05:47.0826044Z             }
2026-06-23T10:05:47.0826164Z           ]
2026-06-23T10:05:47.0826249Z         }
2026-06-23T10:05:47.0826339Z       }
2026-06-23T10:05:47.0826426Z     },
2026-06-23T10:05:47.0826507Z     {
2026-06-23T10:05:47.0826602Z       "id": "REQ-SHELL-5",
2026-06-23T10:05:47.0827790Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-23T10:05:47.0827888Z       "requiredStages": [
2026-06-23T10:05:47.0827969Z         "doc",
2026-06-23T10:05:47.0828056Z         "impl",
2026-06-23T10:05:47.0828144Z         "unit",
2026-06-23T10:05:47.0828229Z         "int"
2026-06-23T10:05:47.0828311Z       ],
2026-06-23T10:05:47.0828406Z       "stages": {
2026-06-23T10:05:47.0828491Z         "doc": {
2026-06-23T10:05:47.0828586Z           "complete": true,
2026-06-23T10:05:47.0828674Z           "evidence": [
2026-06-23T10:05:47.0828759Z             {
2026-06-23T10:05:47.0828863Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0829031Z               "line": 297
2026-06-23T10:05:47.0829135Z             }
2026-06-23T10:05:47.0829216Z           ]
2026-06-23T10:05:47.0829303Z         },
2026-06-23T10:05:47.0829374Z         "impl": {
2026-06-23T10:05:47.0829493Z           "complete": true,
2026-06-23T10:05:47.0829584Z           "evidence": [
2026-06-23T10:05:47.0829693Z             {
2026-06-23T10:05:47.0829826Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T10:05:47.0829909Z               "line": 262
2026-06-23T10:05:47.0830004Z             }
2026-06-23T10:05:47.0830084Z           ]
2026-06-23T10:05:47.0830170Z         },
2026-06-23T10:05:47.0830262Z         "int": {
2026-06-23T10:05:47.0830361Z           "complete": true,
2026-06-23T10:05:47.0830455Z           "evidence": [
2026-06-23T10:05:47.0830536Z             {
2026-06-23T10:05:47.0830659Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0830739Z               "line": 829
2026-06-23T10:05:47.0830819Z             },
2026-06-23T10:05:47.0833431Z             {
2026-06-23T10:05:47.0833623Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0833723Z               "line": 1292
2026-06-23T10:05:47.0833814Z             },
2026-06-23T10:05:47.0833900Z             {
2026-06-23T10:05:47.0834042Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-23T10:05:47.0834138Z               "line": 23
2026-06-23T10:05:47.0834219Z             }
2026-06-23T10:05:47.0834304Z           ]
2026-06-23T10:05:47.0834390Z         },
2026-06-23T10:05:47.0834476Z         "unit": {
2026-06-23T10:05:47.0834577Z           "complete": true,
2026-06-23T10:05:47.0834676Z           "evidence": [
2026-06-23T10:05:47.0834758Z             {
2026-06-23T10:05:47.0834881Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T10:05:47.0834971Z               "line": 803
2026-06-23T10:05:47.0835059Z             }
2026-06-23T10:05:47.0835144Z           ]
2026-06-23T10:05:47.0835229Z         }
2026-06-23T10:05:47.0835316Z       }
2026-06-23T10:05:47.0835543Z     },
2026-06-23T10:05:47.0835629Z     {
2026-06-23T10:05:47.0835719Z       "id": "REQ-START-1",
2026-06-23T10:05:47.0835917Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-23T10:05:47.0836018Z       "requiredStages": [
2026-06-23T10:05:47.0836109Z         "impl",
2026-06-23T10:05:47.0836199Z         "unit"
2026-06-23T10:05:47.0836284Z       ],
2026-06-23T10:05:47.0836376Z       "stages": {
2026-06-23T10:05:47.0836452Z         "doc": {
2026-06-23T10:05:47.0836551Z           "complete": false,
2026-06-23T10:05:47.0836633Z           "evidence": []
2026-06-23T10:05:47.0836823Z         },
2026-06-23T10:05:47.0836904Z         "impl": {
2026-06-23T10:05:47.0837005Z           "complete": true,
2026-06-23T10:05:47.0837095Z           "evidence": [
2026-06-23T10:05:47.0837181Z             {
2026-06-23T10:05:47.0837301Z               "path": "crates/spt-store/src/seed.rs",
2026-06-23T10:05:47.0837386Z               "line": 16
2026-06-23T10:05:47.0837467Z             }
2026-06-23T10:05:47.0837548Z           ]
2026-06-23T10:05:47.0837630Z         },
2026-06-23T10:05:47.0837711Z         "int": {
2026-06-23T10:05:47.0837792Z           "complete": false,
2026-06-23T10:05:47.0837897Z           "evidence": []
2026-06-23T10:05:47.0837969Z         },
2026-06-23T10:05:47.0838054Z         "unit": {
2026-06-23T10:05:47.0838144Z           "complete": true,
2026-06-23T10:05:47.0838236Z           "evidence": [
2026-06-23T10:05:47.0838322Z             {
2026-06-23T10:05:47.0838429Z               "path": "crates/spt-store/src/seed.rs",
2026-06-23T10:05:47.0838524Z               "line": 48
2026-06-23T10:05:47.0838606Z             },
2026-06-23T10:05:47.0838686Z             {
2026-06-23T10:05:47.0838789Z               "path": "crates/spt-store/src/seed.rs",
2026-06-23T10:05:47.0838890Z               "line": 63
2026-06-23T10:05:47.0839075Z             }
2026-06-23T10:05:47.0839156Z           ]
2026-06-23T10:05:47.0839243Z         }
2026-06-23T10:05:47.0839339Z       }
2026-06-23T10:05:47.0839428Z     },
2026-06-23T10:05:47.0839510Z     {
2026-06-23T10:05:47.0839615Z       "id": "REQ-START-2",
2026-06-23T10:05:47.0839757Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-23T10:05:47.0839844Z       "requiredStages": [
2026-06-23T10:05:47.0839930Z         "impl",
2026-06-23T10:05:47.0840011Z         "unit",
2026-06-23T10:05:47.0840101Z         "int"
2026-06-23T10:05:47.0840178Z       ],
2026-06-23T10:05:47.0840272Z       "stages": {
2026-06-23T10:05:47.0840363Z         "doc": {
2026-06-23T10:05:47.0840454Z           "complete": false,
2026-06-23T10:05:47.0840555Z           "evidence": []
2026-06-23T10:05:47.0840644Z         },
2026-06-23T10:05:47.0840730Z         "impl": {
2026-06-23T10:05:47.0840817Z           "complete": true,
2026-06-23T10:05:47.0840912Z           "evidence": [
2026-06-23T10:05:47.0840991Z             {
2026-06-23T10:05:47.0841111Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0841201Z               "line": 16
2026-06-23T10:05:47.0841284Z             },
2026-06-23T10:05:47.0841361Z             {
2026-06-23T10:05:47.0841466Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0841553Z               "line": 115
2026-06-23T10:05:47.0841637Z             },
2026-06-23T10:05:47.0841718Z             {
2026-06-23T10:05:47.0841833Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0841919Z               "line": 300
2026-06-23T10:05:47.0842004Z             }
2026-06-23T10:05:47.0842091Z           ]
2026-06-23T10:05:47.0842176Z         },
2026-06-23T10:05:47.0842257Z         "int": {
2026-06-23T10:05:47.0842362Z           "complete": true,
2026-06-23T10:05:47.0842459Z           "evidence": [
2026-06-23T10:05:47.0842539Z             {
2026-06-23T10:05:47.0842662Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T10:05:47.0842750Z               "line": 186
2026-06-23T10:05:47.0842839Z             }
2026-06-23T10:05:47.0842925Z           ]
2026-06-23T10:05:47.0843006Z         },
2026-06-23T10:05:47.0843191Z         "unit": {
2026-06-23T10:05:47.0843273Z           "complete": true,
2026-06-23T10:05:47.0843365Z           "evidence": [
2026-06-23T10:05:47.0843441Z             {
2026-06-23T10:05:47.0843549Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0843641Z               "line": 590
2026-06-23T10:05:47.0843737Z             },
2026-06-23T10:05:47.0843821Z             {
2026-06-23T10:05:47.0843929Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0844011Z               "line": 623
2026-06-23T10:05:47.0844098Z             }
2026-06-23T10:05:47.0844292Z           ]
2026-06-23T10:05:47.0844379Z         }
2026-06-23T10:05:47.0844460Z       }
2026-06-23T10:05:47.0844550Z     },
2026-06-23T10:05:47.0844631Z     {
2026-06-23T10:05:47.0844736Z       "id": "REQ-START-3",
2026-06-23T10:05:47.0844912Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-23T10:05:47.0845013Z       "requiredStages": [
2026-06-23T10:05:47.0845108Z         "impl",
2026-06-23T10:05:47.0845193Z         "unit",
2026-06-23T10:05:47.0845275Z         "int"
2026-06-23T10:05:47.0845361Z       ],
2026-06-23T10:05:47.0845451Z       "stages": {
2026-06-23T10:05:47.0845527Z         "doc": {
2026-06-23T10:05:47.0845629Z           "complete": false,
2026-06-23T10:05:47.0845714Z           "evidence": []
2026-06-23T10:05:47.0845799Z         },
2026-06-23T10:05:47.0845885Z         "impl": {
2026-06-23T10:05:47.0845967Z           "complete": true,
2026-06-23T10:05:47.0846066Z           "evidence": [
2026-06-23T10:05:47.0846146Z             {
2026-06-23T10:05:47.0846275Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T10:05:47.0846369Z               "line": 23
2026-06-23T10:05:47.0846444Z             },
2026-06-23T10:05:47.0846525Z             {
2026-06-23T10:05:47.0846646Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T10:05:47.0846740Z               "line": 205
2026-06-23T10:05:47.0846830Z             },
2026-06-23T10:05:47.0846921Z             {
2026-06-23T10:05:47.0847045Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T10:05:47.0847140Z               "line": 221
2026-06-23T10:05:47.0847232Z             },
2026-06-23T10:05:47.0847313Z             {
2026-06-23T10:05:47.0847426Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0847513Z               "line": 17
2026-06-23T10:05:47.0847594Z             },
2026-06-23T10:05:47.0847680Z             {
2026-06-23T10:05:47.0847784Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0847866Z               "line": 35
2026-06-23T10:05:47.0847951Z             },
2026-06-23T10:05:47.0848037Z             {
2026-06-23T10:05:47.0848147Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0848243Z               "line": 116
2026-06-23T10:05:47.0848327Z             }
2026-06-23T10:05:47.0848413Z           ]
2026-06-23T10:05:47.0848496Z         },
2026-06-23T10:05:47.0848586Z         "int": {
2026-06-23T10:05:47.0848681Z           "complete": true,
2026-06-23T10:05:47.0848767Z           "evidence": [
2026-06-23T10:05:47.0848849Z             {
2026-06-23T10:05:47.0849061Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T10:05:47.0849152Z               "line": 488
2026-06-23T10:05:47.0849236Z             }
2026-06-23T10:05:47.0849316Z           ]
2026-06-23T10:05:47.0849421Z         },
2026-06-23T10:05:47.0849522Z         "unit": {
2026-06-23T10:05:47.0849626Z           "complete": true,
2026-06-23T10:05:47.0849726Z           "evidence": [
2026-06-23T10:05:47.0849808Z             {
2026-06-23T10:05:47.0849941Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T10:05:47.0850021Z               "line": 381
2026-06-23T10:05:47.0850108Z             },
2026-06-23T10:05:47.0850189Z             {
2026-06-23T10:05:47.0850312Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T10:05:47.0850409Z               "line": 402
2026-06-23T10:05:47.0850495Z             },
2026-06-23T10:05:47.0850694Z             {
2026-06-23T10:05:47.0850810Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T10:05:47.0850899Z               "line": 412
2026-06-23T10:05:47.0850980Z             },
2026-06-23T10:05:47.0851067Z             {
2026-06-23T10:05:47.0851190Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0851276Z               "line": 591
2026-06-23T10:05:47.0851359Z             },
2026-06-23T10:05:47.0851439Z             {
2026-06-23T10:05:47.0851547Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0851632Z               "line": 624
2026-06-23T10:05:47.0851826Z             },
2026-06-23T10:05:47.0851911Z             {
2026-06-23T10:05:47.0852026Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0852118Z               "line": 657
2026-06-23T10:05:47.0852202Z             }
2026-06-23T10:05:47.0852288Z           ]
2026-06-23T10:05:47.0852375Z         }
2026-06-23T10:05:47.0852470Z       }
2026-06-23T10:05:47.0852560Z     },
2026-06-23T10:05:47.0852642Z     {
2026-06-23T10:05:47.0852751Z       "id": "REQ-START-4",
2026-06-23T10:05:47.0852894Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-23T10:05:47.0852990Z       "requiredStages": [
2026-06-23T10:05:47.0853079Z         "impl",
2026-06-23T10:05:47.0853156Z         "unit"
2026-06-23T10:05:47.0853241Z       ],
2026-06-23T10:05:47.0853324Z       "stages": {
2026-06-23T10:05:47.0853418Z         "doc": {
2026-06-23T10:05:47.0853504Z           "complete": false,
2026-06-23T10:05:47.0853596Z           "evidence": []
2026-06-23T10:05:47.0853681Z         },
2026-06-23T10:05:47.0853776Z         "impl": {
2026-06-23T10:05:47.0853871Z           "complete": true,
2026-06-23T10:05:47.0853954Z           "evidence": [
2026-06-23T10:05:47.0854043Z             {
2026-06-23T10:05:47.0854167Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.0854249Z               "line": 585
2026-06-23T10:05:47.0854339Z             }
2026-06-23T10:05:47.0854428Z           ]
2026-06-23T10:05:47.0854523Z         },
2026-06-23T10:05:47.0854605Z         "int": {
2026-06-23T10:05:47.0854700Z           "complete": false,
2026-06-23T10:05:47.0854786Z           "evidence": []
2026-06-23T10:05:47.0854872Z         },
2026-06-23T10:05:47.0854958Z         "unit": {
2026-06-23T10:05:47.0855053Z           "complete": true,
2026-06-23T10:05:47.0855143Z           "evidence": [
2026-06-23T10:05:47.0855230Z             {
2026-06-23T10:05:47.0855349Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.0855434Z               "line": 1026
2026-06-23T10:05:47.0855535Z             }
2026-06-23T10:05:47.0855625Z           ]
2026-06-23T10:05:47.0855711Z         }
2026-06-23T10:05:47.0855801Z       }
2026-06-23T10:05:47.0855884Z     },
2026-06-23T10:05:47.0855973Z     {
2026-06-23T10:05:47.0856054Z       "id": "REQ-START-5",
2026-06-23T10:05:47.0858793Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-23T10:05:47.0858907Z       "requiredStages": [
2026-06-23T10:05:47.0859084Z         "doc",
2026-06-23T10:05:47.0859174Z         "impl",
2026-06-23T10:05:47.0859418Z         "unit",
2026-06-23T10:05:47.0859498Z         "int"
2026-06-23T10:05:47.0859583Z       ],
2026-06-23T10:05:47.0859669Z       "stages": {
2026-06-23T10:05:47.0859754Z         "doc": {
2026-06-23T10:05:47.0859838Z           "complete": true,
2026-06-23T10:05:47.0859923Z           "evidence": [
2026-06-23T10:05:47.0860010Z             {
2026-06-23T10:05:47.0860106Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.0860196Z               "line": 185
2026-06-23T10:05:47.0860277Z             },
2026-06-23T10:05:47.0860359Z             {
2026-06-23T10:05:47.0860496Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-23T10:05:47.0860692Z               "line": 28
2026-06-23T10:05:47.0860778Z             }
2026-06-23T10:05:47.0860863Z           ]
2026-06-23T10:05:47.0860949Z         },
2026-06-23T10:05:47.0861031Z         "impl": {
2026-06-23T10:05:47.0861116Z           "complete": true,
2026-06-23T10:05:47.0861201Z           "evidence": [
2026-06-23T10:05:47.0861298Z             {
2026-06-23T10:05:47.0861426Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T10:05:47.0861516Z               "line": 26
2026-06-23T10:05:47.0861604Z             },
2026-06-23T10:05:47.0861689Z             {
2026-06-23T10:05:47.0861813Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T10:05:47.0861904Z               "line": 212
2026-06-23T10:05:47.0861990Z             },
2026-06-23T10:05:47.0862079Z             {
2026-06-23T10:05:47.0862188Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T10:05:47.0862283Z               "line": 221
2026-06-23T10:05:47.0862368Z             },
2026-06-23T10:05:47.0862452Z             {
2026-06-23T10:05:47.0862563Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T10:05:47.0862649Z               "line": 485
2026-06-23T10:05:47.0862730Z             },
2026-06-23T10:05:47.0862815Z             {
2026-06-23T10:05:47.0862935Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0863011Z               "line": 36
2026-06-23T10:05:47.0863105Z             },
2026-06-23T10:05:47.0863187Z             {
2026-06-23T10:05:47.0863292Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0863387Z               "line": 118
2026-06-23T10:05:47.0863473Z             },
2026-06-23T10:05:47.0863555Z             {
2026-06-23T10:05:47.0863663Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T10:05:47.0863749Z               "line": 329
2026-06-23T10:05:47.0863836Z             }
2026-06-23T10:05:47.0863913Z           ]
2026-06-23T10:05:47.0864003Z         },
2026-06-23T10:05:47.0864088Z         "int": {
2026-06-23T10:05:47.0864184Z           "complete": true,
2026-06-23T10:05:47.0864260Z           "evidence": [
2026-06-23T10:05:47.0864351Z             {
2026-06-23T10:05:47.0864471Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-23T10:05:47.0864557Z               "line": 17
2026-06-23T10:05:47.0864636Z             }
2026-06-23T10:05:47.0864722Z           ]
2026-06-23T10:05:47.0864814Z         },
2026-06-23T10:05:47.0864895Z         "unit": {
2026-06-23T10:05:47.0864988Z           "complete": true,
2026-06-23T10:05:47.0865088Z           "evidence": [
2026-06-23T10:05:47.0865175Z             {
2026-06-23T10:05:47.0865293Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T10:05:47.0865384Z               "line": 358
2026-06-23T10:05:47.0865470Z             },
2026-06-23T10:05:47.0865551Z             {
2026-06-23T10:05:47.0865684Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T10:05:47.0865786Z               "line": 371
2026-06-23T10:05:47.0865871Z             },
2026-06-23T10:05:47.0865951Z             {
2026-06-23T10:05:47.0866061Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T10:05:47.0866157Z               "line": 597
2026-06-23T10:05:47.0866243Z             }
2026-06-23T10:05:47.0866333Z           ]
2026-06-23T10:05:47.0866425Z         }
2026-06-23T10:05:47.0866595Z       }
2026-06-23T10:05:47.0866681Z     },
2026-06-23T10:05:47.0866763Z     {
2026-06-23T10:05:47.0866857Z       "id": "REQ-STORE-1",
2026-06-23T10:05:47.0867693Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-23T10:05:47.0867790Z       "requiredStages": [
2026-06-23T10:05:47.0867884Z         "impl",
2026-06-23T10:05:47.0868052Z         "unit"
2026-06-23T10:05:47.0868137Z       ],
2026-06-23T10:05:47.0868227Z       "stages": {
2026-06-23T10:05:47.0868323Z         "doc": {
2026-06-23T10:05:47.0868418Z           "complete": false,
2026-06-23T10:05:47.0868499Z           "evidence": []
2026-06-23T10:05:47.0868584Z         },
2026-06-23T10:05:47.0868667Z         "impl": {
2026-06-23T10:05:47.0868767Z           "complete": true,
2026-06-23T10:05:47.0868856Z           "evidence": [
2026-06-23T10:05:47.0869034Z             {
2026-06-23T10:05:47.0869167Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0869253Z               "line": 23
2026-06-23T10:05:47.0869335Z             },
2026-06-23T10:05:47.0869433Z             {
2026-06-23T10:05:47.0869563Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0869659Z               "line": 46
2026-06-23T10:05:47.0869743Z             },
2026-06-23T10:05:47.0869830Z             {
2026-06-23T10:05:47.0869955Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0870049Z               "line": 97
2026-06-23T10:05:47.0870134Z             },
2026-06-23T10:05:47.0870224Z             {
2026-06-23T10:05:47.0870338Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0870418Z               "line": 125
2026-06-23T10:05:47.0870503Z             },
2026-06-23T10:05:47.0870580Z             {
2026-06-23T10:05:47.0870704Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0870789Z               "line": 207
2026-06-23T10:05:47.0870875Z             },
2026-06-23T10:05:47.0870962Z             {
2026-06-23T10:05:47.0871080Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0871180Z               "line": 231
2026-06-23T10:05:47.0871262Z             },
2026-06-23T10:05:47.0871343Z             {
2026-06-23T10:05:47.0871461Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0871553Z               "line": 467
2026-06-23T10:05:47.0871643Z             },
2026-06-23T10:05:47.0871724Z             {
2026-06-23T10:05:47.0871854Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:47.0871939Z               "line": 25
2026-06-23T10:05:47.0872024Z             },
2026-06-23T10:05:47.0872115Z             {
2026-06-23T10:05:47.0872245Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:47.0872343Z               "line": 120
2026-06-23T10:05:47.0872420Z             },
2026-06-23T10:05:47.0872503Z             {
2026-06-23T10:05:47.0872616Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:47.0872710Z               "line": 148
2026-06-23T10:05:47.0872786Z             },
2026-06-23T10:05:47.0872867Z             {
2026-06-23T10:05:47.0872998Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:47.0873084Z               "line": 165
2026-06-23T10:05:47.0873175Z             },
2026-06-23T10:05:47.0873262Z             {
2026-06-23T10:05:47.0873389Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:47.0873481Z               "line": 180
2026-06-23T10:05:47.0873566Z             },
2026-06-23T10:05:47.0873656Z             {
2026-06-23T10:05:47.0873776Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:47.0873876Z               "line": 198
2026-06-23T10:05:47.0873952Z             },
2026-06-23T10:05:47.0874148Z             {
2026-06-23T10:05:47.0874277Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:47.0874358Z               "line": 207
2026-06-23T10:05:47.0874444Z             },
2026-06-23T10:05:47.0874524Z             {
2026-06-23T10:05:47.0874653Z               "path": "crates/spt-store/src/project.rs",
2026-06-23T10:05:47.0874740Z               "line": 16
2026-06-23T10:05:47.0874830Z             },
2026-06-23T10:05:47.0874916Z             {
2026-06-23T10:05:47.0875021Z               "path": "crates/spt-store/src/project.rs",
2026-06-23T10:05:47.0875112Z               "line": 63
2026-06-23T10:05:47.0875321Z             }
2026-06-23T10:05:47.0875403Z           ]
2026-06-23T10:05:47.0875483Z         },
2026-06-23T10:05:47.0875577Z         "int": {
2026-06-23T10:05:47.0875672Z           "complete": false,
2026-06-23T10:05:47.0875759Z           "evidence": []
2026-06-23T10:05:47.0875849Z         },
2026-06-23T10:05:47.0875939Z         "unit": {
2026-06-23T10:05:47.0876045Z           "complete": true,
2026-06-23T10:05:47.0876141Z           "evidence": [
2026-06-23T10:05:47.0876230Z             {
2026-06-23T10:05:47.0876365Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0876455Z               "line": 584
2026-06-23T10:05:47.0876549Z             },
2026-06-23T10:05:47.0876631Z             {
2026-06-23T10:05:47.0876750Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0876836Z               "line": 594
2026-06-23T10:05:47.0876921Z             },
2026-06-23T10:05:47.0877018Z             {
2026-06-23T10:05:47.0877146Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0877241Z               "line": 616
2026-06-23T10:05:47.0877328Z             },
2026-06-23T10:05:47.0877412Z             {
2026-06-23T10:05:47.0877532Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0877629Z               "line": 632
2026-06-23T10:05:47.0877723Z             },
2026-06-23T10:05:47.0877803Z             {
2026-06-23T10:05:47.0877927Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T10:05:47.0878017Z               "line": 690
2026-06-23T10:05:47.0878101Z             },
2026-06-23T10:05:47.0878181Z             {
2026-06-23T10:05:47.0878302Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:47.0878392Z               "line": 472
2026-06-23T10:05:47.0878477Z             },
2026-06-23T10:05:47.0878559Z             {
2026-06-23T10:05:47.0878683Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T10:05:47.0878787Z               "line": 507
2026-06-23T10:05:47.0878869Z             },
2026-06-23T10:05:47.0879045Z             {
2026-06-23T10:05:47.0879179Z               "path": "crates/spt-store/src/project.rs",
2026-06-23T10:05:47.0879265Z               "line": 120
2026-06-23T10:05:47.0879369Z             },
2026-06-23T10:05:47.0879455Z             {
2026-06-23T10:05:47.0879575Z               "path": "crates/spt-store/src/project.rs",
2026-06-23T10:05:47.0879670Z               "line": 128
2026-06-23T10:05:47.0879746Z             }
2026-06-23T10:05:47.0879833Z           ]
2026-06-23T10:05:47.0879914Z         }
2026-06-23T10:05:47.0879998Z       }
2026-06-23T10:05:47.0880084Z     },
2026-06-23T10:05:47.0880167Z     {
2026-06-23T10:05:47.0880252Z       "id": "REQ-SUBNET-1",
2026-06-23T10:05:47.0880585Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-23T10:05:47.0880689Z       "requiredStages": [
2026-06-23T10:05:47.0880784Z         "impl",
2026-06-23T10:05:47.0880865Z         "unit"
2026-06-23T10:05:47.0880949Z       ],
2026-06-23T10:05:47.0881044Z       "stages": {
2026-06-23T10:05:47.0881130Z         "doc": {
2026-06-23T10:05:47.0881231Z           "complete": false,
2026-06-23T10:05:47.0881325Z           "evidence": []
2026-06-23T10:05:47.0881406Z         },
2026-06-23T10:05:47.0881493Z         "impl": {
2026-06-23T10:05:47.0881706Z           "complete": true,
2026-06-23T10:05:47.0881794Z           "evidence": [
2026-06-23T10:05:47.0881884Z             {
2026-06-23T10:05:47.0882021Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0882114Z               "line": 281
2026-06-23T10:05:47.0882203Z             },
2026-06-23T10:05:47.0882298Z             {
2026-06-23T10:05:47.0882414Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0882504Z               "line": 651
2026-06-23T10:05:47.0882589Z             },
2026-06-23T10:05:47.0882670Z             {
2026-06-23T10:05:47.0882875Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0882966Z               "line": 4054
2026-06-23T10:05:47.0883053Z             },
2026-06-23T10:05:47.0883143Z             {
2026-06-23T10:05:47.0883251Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0883351Z               "line": 4364
2026-06-23T10:05:47.0883432Z             },
2026-06-23T10:05:47.0883521Z             {
2026-06-23T10:05:47.0883625Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0883726Z               "line": 4383
2026-06-23T10:05:47.0883798Z             },
2026-06-23T10:05:47.0883888Z             {
2026-06-23T10:05:47.0883987Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0884070Z               "line": 4447
2026-06-23T10:05:47.0884160Z             },
2026-06-23T10:05:47.0884235Z             {
2026-06-23T10:05:47.0884337Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0884427Z               "line": 4489
2026-06-23T10:05:47.0884522Z             },
2026-06-23T10:05:47.0884608Z             {
2026-06-23T10:05:47.0884708Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0884803Z               "line": 4678
2026-06-23T10:05:47.0884888Z             },
2026-06-23T10:05:47.0884981Z             {
2026-06-23T10:05:47.0885085Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0885185Z               "line": 4748
2026-06-23T10:05:47.0885281Z             },
2026-06-23T10:05:47.0885366Z             {
2026-06-23T10:05:47.0885481Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0885571Z               "line": 4972
2026-06-23T10:05:47.0885663Z             },
2026-06-23T10:05:47.0885737Z             {
2026-06-23T10:05:47.0885842Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0885940Z               "line": 5616
2026-06-23T10:05:47.0886024Z             },
2026-06-23T10:05:47.0886113Z             {
2026-06-23T10:05:47.0886223Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T10:05:47.0886319Z               "line": 418
2026-06-23T10:05:47.0886400Z             }
2026-06-23T10:05:47.0886490Z           ]
2026-06-23T10:05:47.0886576Z         },
2026-06-23T10:05:47.0886657Z         "int": {
2026-06-23T10:05:47.0886748Z           "complete": false,
2026-06-23T10:05:47.0886833Z           "evidence": []
2026-06-23T10:05:47.0886920Z         },
2026-06-23T10:05:47.0887015Z         "unit": {
2026-06-23T10:05:47.0887114Z           "complete": true,
2026-06-23T10:05:47.0887211Z           "evidence": [
2026-06-23T10:05:47.0887297Z             {
2026-06-23T10:05:47.0887433Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0887526Z               "line": 1584
2026-06-23T10:05:47.0887621Z             },
2026-06-23T10:05:47.0887702Z             {
2026-06-23T10:05:47.0887806Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0887903Z               "line": 11502
2026-06-23T10:05:47.0887987Z             },
2026-06-23T10:05:47.0888073Z             {
2026-06-23T10:05:47.0888189Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0888274Z               "line": 11672
2026-06-23T10:05:47.0888353Z             },
2026-06-23T10:05:47.0888443Z             {
2026-06-23T10:05:47.0888549Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0888638Z               "line": 11679
2026-06-23T10:05:47.0888728Z             },
2026-06-23T10:05:47.0888886Z             {
2026-06-23T10:05:47.0889100Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0889219Z               "line": 11732
2026-06-23T10:05:47.0889295Z             },
2026-06-23T10:05:47.0889404Z             {
2026-06-23T10:05:47.0889511Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0889606Z               "line": 11749
2026-06-23T10:05:47.0889691Z             },
2026-06-23T10:05:47.0889773Z             {
2026-06-23T10:05:47.0889877Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0889972Z               "line": 11779
2026-06-23T10:05:47.0890168Z             },
2026-06-23T10:05:47.0890254Z             {
2026-06-23T10:05:47.0890363Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0890455Z               "line": 11895
2026-06-23T10:05:47.0890539Z             },
2026-06-23T10:05:47.0890625Z             {
2026-06-23T10:05:47.0890722Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0890831Z               "line": 12046
2026-06-23T10:05:47.0890902Z             }
2026-06-23T10:05:47.0890993Z           ]
2026-06-23T10:05:47.0891075Z         }
2026-06-23T10:05:47.0891173Z       }
2026-06-23T10:05:47.0891259Z     },
2026-06-23T10:05:47.0891345Z     {
2026-06-23T10:05:47.0891444Z       "id": "REQ-SUBNET-2",
2026-06-23T10:05:47.0891671Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-23T10:05:47.0891777Z       "requiredStages": [
2026-06-23T10:05:47.0891857Z         "impl",
2026-06-23T10:05:47.0891952Z         "unit",
2026-06-23T10:05:47.0892044Z         "int"
2026-06-23T10:05:47.0892125Z       ],
2026-06-23T10:05:47.0892214Z       "stages": {
2026-06-23T10:05:47.0892301Z         "doc": {
2026-06-23T10:05:47.0892401Z           "complete": true,
2026-06-23T10:05:47.0892482Z           "evidence": [
2026-06-23T10:05:47.0892572Z             {
2026-06-23T10:05:47.0892725Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-23T10:05:47.0892811Z               "line": 60
2026-06-23T10:05:47.0892901Z             }
2026-06-23T10:05:47.0892984Z           ]
2026-06-23T10:05:47.0893073Z         },
2026-06-23T10:05:47.0893163Z         "impl": {
2026-06-23T10:05:47.0893265Z           "complete": true,
2026-06-23T10:05:47.0893350Z           "evidence": [
2026-06-23T10:05:47.0893435Z             {
2026-06-23T10:05:47.0893560Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:47.0893651Z               "line": 1008
2026-06-23T10:05:47.0893731Z             },
2026-06-23T10:05:47.0893821Z             {
2026-06-23T10:05:47.0893954Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:47.0894057Z               "line": 2099
2026-06-23T10:05:47.0894138Z             },
2026-06-23T10:05:47.0894228Z             {
2026-06-23T10:05:47.0894349Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:47.0894438Z               "line": 633
2026-06-23T10:05:47.0894519Z             },
2026-06-23T10:05:47.0894615Z             {
2026-06-23T10:05:47.0894734Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T10:05:47.0894819Z               "line": 817
2026-06-23T10:05:47.0894911Z             },
2026-06-23T10:05:47.0894987Z             {
2026-06-23T10:05:47.0895115Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:47.0895197Z               "line": 26
2026-06-23T10:05:47.0895292Z             },
2026-06-23T10:05:47.0895378Z             {
2026-06-23T10:05:47.0895497Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:47.0895579Z               "line": 60
2026-06-23T10:05:47.0895669Z             },
2026-06-23T10:05:47.0895754Z             {
2026-06-23T10:05:47.0895875Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:47.0895964Z               "line": 168
2026-06-23T10:05:47.0896055Z             },
2026-06-23T10:05:47.0896141Z             {
2026-06-23T10:05:47.0896265Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:47.0896466Z               "line": 295
2026-06-23T10:05:47.0896556Z             },
2026-06-23T10:05:47.0896645Z             {
2026-06-23T10:05:47.0896769Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:47.0896865Z               "line": 417
2026-06-23T10:05:47.0896951Z             },
2026-06-23T10:05:47.0897035Z             {
2026-06-23T10:05:47.0897165Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T10:05:47.0897251Z               "line": 252
2026-06-23T10:05:47.0897336Z             },
2026-06-23T10:05:47.0897422Z             {
2026-06-23T10:05:47.0897609Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0897703Z               "line": 4410
2026-06-23T10:05:47.0897795Z             },
2026-06-23T10:05:47.0897880Z             {
2026-06-23T10:05:47.0897989Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0898076Z               "line": 4911
2026-06-23T10:05:47.0898167Z             },
2026-06-23T10:05:47.0898262Z             {
2026-06-23T10:05:47.0898367Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0898467Z               "line": 5547
2026-06-23T10:05:47.0898557Z             }
2026-06-23T10:05:47.0898642Z           ]
2026-06-23T10:05:47.0898725Z         },
2026-06-23T10:05:47.0898810Z         "int": {
2026-06-23T10:05:47.0898909Z           "complete": true,
2026-06-23T10:05:47.0899071Z           "evidence": [
2026-06-23T10:05:47.0899156Z             {
2026-06-23T10:05:47.0899278Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-23T10:05:47.0899393Z               "line": 22
2026-06-23T10:05:47.0899499Z             },
2026-06-23T10:05:47.0899583Z             {
2026-06-23T10:05:47.0899712Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0899798Z               "line": 647
2026-06-23T10:05:47.0899884Z             },
2026-06-23T10:05:47.0899965Z             {
2026-06-23T10:05:47.0900090Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.0900189Z               "line": 889
2026-06-23T10:05:47.0900270Z             }
2026-06-23T10:05:47.0900357Z           ]
2026-06-23T10:05:47.0900442Z         },
2026-06-23T10:05:47.0903094Z         "unit": {
2026-06-23T10:05:47.0903224Z           "complete": true,
2026-06-23T10:05:47.0903323Z           "evidence": [
2026-06-23T10:05:47.0903404Z             {
2026-06-23T10:05:47.0903534Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:47.0903633Z               "line": 586
2026-06-23T10:05:47.0903714Z             },
2026-06-23T10:05:47.0903815Z             {
2026-06-23T10:05:47.0903920Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0904014Z               "line": 11542
2026-06-23T10:05:47.0904101Z             },
2026-06-23T10:05:47.0904178Z             {
2026-06-23T10:05:47.0904286Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0904372Z               "line": 12253
2026-06-23T10:05:47.0904457Z             }
2026-06-23T10:05:47.0904548Z           ]
2026-06-23T10:05:47.0904631Z         }
2026-06-23T10:05:47.0904717Z       }
2026-06-23T10:05:47.0904803Z     },
2026-06-23T10:05:47.0904889Z     {
2026-06-23T10:05:47.0904974Z       "id": "REQ-SUBNET-3",
2026-06-23T10:05:47.0905256Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-23T10:05:47.0905341Z       "requiredStages": [
2026-06-23T10:05:47.0905428Z         "impl",
2026-06-23T10:05:47.0905513Z         "unit"
2026-06-23T10:05:47.0905595Z       ],
2026-06-23T10:05:47.0905685Z       "stages": {
2026-06-23T10:05:47.0905772Z         "doc": {
2026-06-23T10:05:47.0905866Z           "complete": false,
2026-06-23T10:05:47.0905957Z           "evidence": []
2026-06-23T10:05:47.0906047Z         },
2026-06-23T10:05:47.0906139Z         "impl": {
2026-06-23T10:05:47.0906234Z           "complete": true,
2026-06-23T10:05:47.0906329Z           "evidence": [
2026-06-23T10:05:47.0906411Z             {
2026-06-23T10:05:47.0906716Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0906801Z               "line": 152
2026-06-23T10:05:47.0906896Z             },
2026-06-23T10:05:47.0906987Z             {
2026-06-23T10:05:47.0907121Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0907210Z               "line": 299
2026-06-23T10:05:47.0907295Z             },
2026-06-23T10:05:47.0907387Z             {
2026-06-23T10:05:47.0907511Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0907595Z               "line": 443
2026-06-23T10:05:47.0907792Z             },
2026-06-23T10:05:47.0907868Z             {
2026-06-23T10:05:47.0907997Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0908083Z               "line": 532
2026-06-23T10:05:47.0908169Z             },
2026-06-23T10:05:47.0908253Z             {
2026-06-23T10:05:47.0908383Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0908478Z               "line": 125
2026-06-23T10:05:47.0908559Z             },
2026-06-23T10:05:47.0908646Z             {
2026-06-23T10:05:47.0908764Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0908860Z               "line": 253
2026-06-23T10:05:47.0909041Z             },
2026-06-23T10:05:47.0909126Z             {
2026-06-23T10:05:47.0909251Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0909347Z               "line": 264
2026-06-23T10:05:47.0909432Z             },
2026-06-23T10:05:47.0909512Z             {
2026-06-23T10:05:47.0909645Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0909730Z               "line": 285
2026-06-23T10:05:47.0909819Z             },
2026-06-23T10:05:47.0909900Z             {
2026-06-23T10:05:47.0910011Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0910101Z               "line": 621
2026-06-23T10:05:47.0910186Z             },
2026-06-23T10:05:47.0910277Z             {
2026-06-23T10:05:47.0910387Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0910477Z               "line": 680
2026-06-23T10:05:47.0910559Z             },
2026-06-23T10:05:47.0910645Z             {
2026-06-23T10:05:47.0910768Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T10:05:47.0910849Z               "line": 61
2026-06-23T10:05:47.0910941Z             },
2026-06-23T10:05:47.0911026Z             {
2026-06-23T10:05:47.0911140Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T10:05:47.0911241Z               "line": 90
2026-06-23T10:05:47.0911322Z             },
2026-06-23T10:05:47.0911412Z             {
2026-06-23T10:05:47.0911532Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T10:05:47.0911632Z               "line": 125
2026-06-23T10:05:47.0911718Z             },
2026-06-23T10:05:47.0911799Z             {
2026-06-23T10:05:47.0911928Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-23T10:05:47.0912017Z               "line": 9
2026-06-23T10:05:47.0912104Z             },
2026-06-23T10:05:47.0912190Z             {
2026-06-23T10:05:47.0912304Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0912398Z               "line": 4748
2026-06-23T10:05:47.0912479Z             },
2026-06-23T10:05:47.0912565Z             {
2026-06-23T10:05:47.0912672Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T10:05:47.0912758Z               "line": 445
2026-06-23T10:05:47.0912839Z             }
2026-06-23T10:05:47.0912926Z           ]
2026-06-23T10:05:47.0913029Z         },
2026-06-23T10:05:47.0913111Z         "int": {
2026-06-23T10:05:47.0913207Z           "complete": false,
2026-06-23T10:05:47.0913297Z           "evidence": []
2026-06-23T10:05:47.0913387Z         },
2026-06-23T10:05:47.0913469Z         "unit": {
2026-06-23T10:05:47.0913559Z           "complete": true,
2026-06-23T10:05:47.0913654Z           "evidence": [
2026-06-23T10:05:47.0913846Z             {
2026-06-23T10:05:47.0913974Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0914060Z               "line": 1356
2026-06-23T10:05:47.0914142Z             },
2026-06-23T10:05:47.0914226Z             {
2026-06-23T10:05:47.0914356Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0914452Z               "line": 1713
2026-06-23T10:05:47.0914536Z             },
2026-06-23T10:05:47.0914618Z             {
2026-06-23T10:05:47.0914733Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T10:05:47.0914828Z               "line": 896
2026-06-23T10:05:47.0915002Z             },
2026-06-23T10:05:47.0915089Z             {
2026-06-23T10:05:47.0915205Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0915287Z               "line": 991
2026-06-23T10:05:47.0915372Z             },
2026-06-23T10:05:47.0915449Z             {
2026-06-23T10:05:47.0915572Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0915668Z               "line": 1041
2026-06-23T10:05:47.0915754Z             },
2026-06-23T10:05:47.0915835Z             {
2026-06-23T10:05:47.0915958Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0916046Z               "line": 1100
2026-06-23T10:05:47.0916126Z             },
2026-06-23T10:05:47.0916216Z             {
2026-06-23T10:05:47.0916341Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T10:05:47.0916417Z               "line": 234
2026-06-23T10:05:47.0916507Z             },
2026-06-23T10:05:47.0916593Z             {
2026-06-23T10:05:47.0916718Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-23T10:05:47.0916808Z               "line": 49
2026-06-23T10:05:47.0916898Z             },
2026-06-23T10:05:47.0916990Z             {
2026-06-23T10:05:47.0917098Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0917184Z               "line": 11895
2026-06-23T10:05:47.0917271Z             },
2026-06-23T10:05:47.0917352Z             {
2026-06-23T10:05:47.0917451Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0917538Z               "line": 12001
2026-06-23T10:05:47.0917629Z             },
2026-06-23T10:05:47.0917714Z             {
2026-06-23T10:05:47.0917818Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0917903Z               "line": 12219
2026-06-23T10:05:47.0917990Z             }
2026-06-23T10:05:47.0918075Z           ]
2026-06-23T10:05:47.0918170Z         }
2026-06-23T10:05:47.0918257Z       }
2026-06-23T10:05:47.0918343Z     },
2026-06-23T10:05:47.0918437Z     {
2026-06-23T10:05:47.0918533Z       "id": "REQ-SUBNET-4",
2026-06-23T10:05:47.0918818Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-23T10:05:47.0918906Z       "requiredStages": [
2026-06-23T10:05:47.0919081Z         "impl",
2026-06-23T10:05:47.0919167Z         "unit"
2026-06-23T10:05:47.0919244Z       ],
2026-06-23T10:05:47.0919372Z       "stages": {
2026-06-23T10:05:47.0919448Z         "doc": {
2026-06-23T10:05:47.0919550Z           "complete": true,
2026-06-23T10:05:47.0919630Z           "evidence": [
2026-06-23T10:05:47.0919725Z             {
2026-06-23T10:05:47.0919888Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-23T10:05:47.0919977Z               "line": 60
2026-06-23T10:05:47.0920062Z             }
2026-06-23T10:05:47.0920148Z           ]
2026-06-23T10:05:47.0920224Z         },
2026-06-23T10:05:47.0920304Z         "impl": {
2026-06-23T10:05:47.0920394Z           "complete": true,
2026-06-23T10:05:47.0920499Z           "evidence": [
2026-06-23T10:05:47.0920581Z             {
2026-06-23T10:05:47.0920690Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0920771Z               "line": 4054
2026-06-23T10:05:47.0920857Z             },
2026-06-23T10:05:47.0920938Z             {
2026-06-23T10:05:47.0921042Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0921248Z               "line": 5514
2026-06-23T10:05:47.0921328Z             },
2026-06-23T10:05:47.0921410Z             {
2026-06-23T10:05:47.0921510Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0921605Z               "line": 5547
2026-06-23T10:05:47.0921690Z             }
2026-06-23T10:05:47.0921773Z           ]
2026-06-23T10:05:47.0921853Z         },
2026-06-23T10:05:47.0921939Z         "int": {
2026-06-23T10:05:47.0922029Z           "complete": false,
2026-06-23T10:05:47.0922111Z           "evidence": []
2026-06-23T10:05:47.0922201Z         },
2026-06-23T10:05:47.0922388Z         "unit": {
2026-06-23T10:05:47.0922483Z           "complete": true,
2026-06-23T10:05:47.0922582Z           "evidence": [
2026-06-23T10:05:47.0922669Z             {
2026-06-23T10:05:47.0922774Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0922859Z               "line": 11658
2026-06-23T10:05:47.0922939Z             },
2026-06-23T10:05:47.0923025Z             {
2026-06-23T10:05:47.0923129Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0923218Z               "line": 11732
2026-06-23T10:05:47.0923294Z             }
2026-06-23T10:05:47.0923381Z           ]
2026-06-23T10:05:47.0923466Z         }
2026-06-23T10:05:47.0923552Z       }
2026-06-23T10:05:47.0923633Z     },
2026-06-23T10:05:47.0923720Z     {
2026-06-23T10:05:47.0923820Z       "id": "REQ-SUBNET-5",
2026-06-23T10:05:47.0924945Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-23T10:05:47.0925060Z       "requiredStages": [
2026-06-23T10:05:47.0925144Z         "impl",
2026-06-23T10:05:47.0925226Z         "unit",
2026-06-23T10:05:47.0925313Z         "int"
2026-06-23T10:05:47.0925402Z       ],
2026-06-23T10:05:47.0925492Z       "stages": {
2026-06-23T10:05:47.0925582Z         "doc": {
2026-06-23T10:05:47.0925682Z           "complete": false,
2026-06-23T10:05:47.0925761Z           "evidence": []
2026-06-23T10:05:47.0925847Z         },
2026-06-23T10:05:47.0925942Z         "impl": {
2026-06-23T10:05:47.0926024Z           "complete": true,
2026-06-23T10:05:47.0926109Z           "evidence": [
2026-06-23T10:05:47.0926199Z             {
2026-06-23T10:05:47.0926334Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T10:05:47.0926424Z               "line": 128
2026-06-23T10:05:47.0926519Z             },
2026-06-23T10:05:47.0926606Z             {
2026-06-23T10:05:47.0926729Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T10:05:47.0926824Z               "line": 413
2026-06-23T10:05:47.0926911Z             },
2026-06-23T10:05:47.0926996Z             {
2026-06-23T10:05:47.0927120Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:47.0927211Z               "line": 74
2026-06-23T10:05:47.0927301Z             },
2026-06-23T10:05:47.0927387Z             {
2026-06-23T10:05:47.0927512Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:47.0927593Z               "line": 332
2026-06-23T10:05:47.0927682Z             },
2026-06-23T10:05:47.0927769Z             {
2026-06-23T10:05:47.0927894Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:47.0927982Z               "line": 621
2026-06-23T10:05:47.0928064Z             },
2026-06-23T10:05:47.0928147Z             {
2026-06-23T10:05:47.0928279Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-23T10:05:47.0928373Z               "line": 31
2026-06-23T10:05:47.0928449Z             },
2026-06-23T10:05:47.0928540Z             {
2026-06-23T10:05:47.0928669Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-23T10:05:47.0928749Z               "line": 50
2026-06-23T10:05:47.0928846Z             },
2026-06-23T10:05:47.0929098Z             {
2026-06-23T10:05:47.0929227Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-23T10:05:47.0929317Z               "line": 69
2026-06-23T10:05:47.0929422Z             },
2026-06-23T10:05:47.0929508Z             {
2026-06-23T10:05:47.0929627Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-23T10:05:47.0929708Z               "line": 113
2026-06-23T10:05:47.0929790Z             },
2026-06-23T10:05:47.0929875Z             {
2026-06-23T10:05:47.0930004Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-23T10:05:47.0930091Z               "line": 25
2026-06-23T10:05:47.0930275Z             },
2026-06-23T10:05:47.0930361Z             {
2026-06-23T10:05:47.0930481Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-23T10:05:47.0930566Z               "line": 34
2026-06-23T10:05:47.0930651Z             },
2026-06-23T10:05:47.0930737Z             {
2026-06-23T10:05:47.0930859Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-23T10:05:47.0930954Z               "line": 17
2026-06-23T10:05:47.0931035Z             },
2026-06-23T10:05:47.0931122Z             {
2026-06-23T10:05:47.0931226Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0931306Z               "line": 5472
2026-06-23T10:05:47.0931398Z             },
2026-06-23T10:05:47.0931479Z             {
2026-06-23T10:05:47.0931583Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T10:05:47.0931674Z               "line": 419
2026-06-23T10:05:47.0931765Z             }
2026-06-23T10:05:47.0931841Z           ]
2026-06-23T10:05:47.0931935Z         },
2026-06-23T10:05:47.0932019Z         "int": {
2026-06-23T10:05:47.0932108Z           "complete": true,
2026-06-23T10:05:47.0932199Z           "evidence": [
2026-06-23T10:05:47.0932289Z             {
2026-06-23T10:05:47.0932418Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T10:05:47.0932504Z               "line": 825
2026-06-23T10:05:47.0932589Z             }
2026-06-23T10:05:47.0932686Z           ]
2026-06-23T10:05:47.0932761Z         },
2026-06-23T10:05:47.0932847Z         "unit": {
2026-06-23T10:05:47.0932934Z           "complete": true,
2026-06-23T10:05:47.0933024Z           "evidence": [
2026-06-23T10:05:47.0933099Z             {
2026-06-23T10:05:47.0933224Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T10:05:47.0933311Z               "line": 341
2026-06-23T10:05:47.0933400Z             },
2026-06-23T10:05:47.0933489Z             {
2026-06-23T10:05:47.0933599Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T10:05:47.0933703Z               "line": 1115
2026-06-23T10:05:47.0933783Z             },
2026-06-23T10:05:47.0933868Z             {
2026-06-23T10:05:47.0933999Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-23T10:05:47.0934079Z               "line": 151
2026-06-23T10:05:47.0934159Z             },
2026-06-23T10:05:47.0934246Z             {
2026-06-23T10:05:47.0934365Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-23T10:05:47.0934464Z               "line": 61
2026-06-23T10:05:47.0934556Z             },
2026-06-23T10:05:47.0934647Z             {
2026-06-23T10:05:47.0934770Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-23T10:05:47.0934865Z               "line": 111
2026-06-23T10:05:47.0934947Z             },
2026-06-23T10:05:47.0935027Z             {
2026-06-23T10:05:47.0935147Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-23T10:05:47.0935224Z               "line": 138
2026-06-23T10:05:47.0935319Z             },
2026-06-23T10:05:47.0935404Z             {
2026-06-23T10:05:47.0935530Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-23T10:05:47.0935615Z               "line": 148
2026-06-23T10:05:47.0935709Z             },
2026-06-23T10:05:47.0935796Z             {
2026-06-23T10:05:47.0935911Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0936009Z               "line": 11559
2026-06-23T10:05:47.0936223Z             }
2026-06-23T10:05:47.0936397Z           ]
2026-06-23T10:05:47.0936479Z         }
2026-06-23T10:05:47.0936570Z       }
2026-06-23T10:05:47.0936646Z     },
2026-06-23T10:05:47.0936731Z     {
2026-06-23T10:05:47.0936832Z       "id": "REQ-SUBNET-6",
2026-06-23T10:05:47.0937505Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-23T10:05:47.0937609Z       "requiredStages": [
2026-06-23T10:05:47.0937767Z         "impl",
2026-06-23T10:05:47.0937852Z         "unit"
2026-06-23T10:05:47.0937933Z       ],
2026-06-23T10:05:47.0938014Z       "stages": {
2026-06-23T10:05:47.0938101Z         "doc": {
2026-06-23T10:05:47.0938186Z           "complete": false,
2026-06-23T10:05:47.0938281Z           "evidence": []
2026-06-23T10:05:47.0938367Z         },
2026-06-23T10:05:47.0938464Z         "impl": {
2026-06-23T10:05:47.0938557Z           "complete": true,
2026-06-23T10:05:47.0938638Z           "evidence": [
2026-06-23T10:05:47.0938721Z             {
2026-06-23T10:05:47.0938839Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0938933Z               "line": 254
2026-06-23T10:05:47.0939105Z             },
2026-06-23T10:05:47.0939191Z             {
2026-06-23T10:05:47.0939305Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0939411Z               "line": 5130
2026-06-23T10:05:47.0939492Z             },
2026-06-23T10:05:47.0939572Z             {
2026-06-23T10:05:47.0939682Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0939763Z               "line": 5147
2026-06-23T10:05:47.0939849Z             },
2026-06-23T10:05:47.0939934Z             {
2026-06-23T10:05:47.0940036Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0940125Z               "line": 5200
2026-06-23T10:05:47.0940196Z             },
2026-06-23T10:05:47.0940277Z             {
2026-06-23T10:05:47.0940384Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0940478Z               "line": 5223
2026-06-23T10:05:47.0940564Z             }
2026-06-23T10:05:47.0940646Z           ]
2026-06-23T10:05:47.0940736Z         },
2026-06-23T10:05:47.0940821Z         "int": {
2026-06-23T10:05:47.0940921Z           "complete": false,
2026-06-23T10:05:47.0941014Z           "evidence": []
2026-06-23T10:05:47.0941097Z         },
2026-06-23T10:05:47.0941187Z         "unit": {
2026-06-23T10:05:47.0941273Z           "complete": true,
2026-06-23T10:05:47.0941377Z           "evidence": [
2026-06-23T10:05:47.0941452Z             {
2026-06-23T10:05:47.0941556Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0941648Z               "line": 11573
2026-06-23T10:05:47.0941739Z             },
2026-06-23T10:05:47.0941819Z             {
2026-06-23T10:05:47.0941919Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0942011Z               "line": 11606
2026-06-23T10:05:47.0942096Z             },
2026-06-23T10:05:47.0942181Z             {
2026-06-23T10:05:47.0942288Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0942378Z               "line": 11615
2026-06-23T10:05:47.0942463Z             }
2026-06-23T10:05:47.0942545Z           ]
2026-06-23T10:05:47.0942635Z         }
2026-06-23T10:05:47.0942716Z       }
2026-06-23T10:05:47.0942801Z     },
2026-06-23T10:05:47.0942883Z     {
2026-06-23T10:05:47.0942987Z       "id": "REQ-SUBNET-7",
2026-06-23T10:05:47.0944583Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-23T10:05:47.0944796Z       "requiredStages": [
2026-06-23T10:05:47.0944892Z         "impl",
2026-06-23T10:05:47.0944968Z         "unit"
2026-06-23T10:05:47.0945048Z       ],
2026-06-23T10:05:47.0945136Z       "stages": {
2026-06-23T10:05:47.0945221Z         "doc": {
2026-06-23T10:05:47.0945320Z           "complete": false,
2026-06-23T10:05:47.0945407Z           "evidence": []
2026-06-23T10:05:47.0945488Z         },
2026-06-23T10:05:47.0945574Z         "impl": {
2026-06-23T10:05:47.0945669Z           "complete": true,
2026-06-23T10:05:47.0945860Z           "evidence": [
2026-06-23T10:05:47.0945945Z             {
2026-06-23T10:05:47.0946070Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-23T10:05:47.0946156Z               "line": 17
2026-06-23T10:05:47.0946236Z             },
2026-06-23T10:05:47.0946326Z             {
2026-06-23T10:05:47.0946447Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:47.0946537Z               "line": 103
2026-06-23T10:05:47.0946621Z             },
2026-06-23T10:05:47.0946712Z             {
2026-06-23T10:05:47.0946830Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T10:05:47.0946924Z               "line": 312
2026-06-23T10:05:47.0947014Z             },
2026-06-23T10:05:47.0947096Z             {
2026-06-23T10:05:47.0947234Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-23T10:05:47.0947320Z               "line": 131
2026-06-23T10:05:47.0947411Z             },
2026-06-23T10:05:47.0947497Z             {
2026-06-23T10:05:47.0947630Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0947716Z               "line": 160
2026-06-23T10:05:47.0947802Z             },
2026-06-23T10:05:47.0947887Z             {
2026-06-23T10:05:47.0948012Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0948098Z               "line": 447
2026-06-23T10:05:47.0948188Z             },
2026-06-23T10:05:47.0948274Z             {
2026-06-23T10:05:47.0948408Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0948489Z               "line": 670
2026-06-23T10:05:47.0948579Z             },
2026-06-23T10:05:47.0948661Z             {
2026-06-23T10:05:47.0948788Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0948884Z               "line": 710
2026-06-23T10:05:47.0949056Z             },
2026-06-23T10:05:47.0949141Z             {
2026-06-23T10:05:47.0949267Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0949385Z               "line": 766
2026-06-23T10:05:47.0949464Z             },
2026-06-23T10:05:47.0949555Z             {
2026-06-23T10:05:47.0949684Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T10:05:47.0949770Z               "line": 136
2026-06-23T10:05:47.0949860Z             },
2026-06-23T10:05:47.0949942Z             {
2026-06-23T10:05:47.0950071Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0950160Z               "line": 139
2026-06-23T10:05:47.0950247Z             }
2026-06-23T10:05:47.0950338Z           ]
2026-06-23T10:05:47.0950419Z         },
2026-06-23T10:05:47.0950504Z         "int": {
2026-06-23T10:05:47.0950596Z           "complete": false,
2026-06-23T10:05:47.0950695Z           "evidence": []
2026-06-23T10:05:47.0950766Z         },
2026-06-23T10:05:47.0950915Z         "unit": {
2026-06-23T10:05:47.0951028Z           "complete": true,
2026-06-23T10:05:47.0951119Z           "evidence": [
2026-06-23T10:05:47.0951211Z             {
2026-06-23T10:05:47.0951324Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-23T10:05:47.0951419Z               "line": 136
2026-06-23T10:05:47.0951491Z             },
2026-06-23T10:05:47.0951583Z             {
2026-06-23T10:05:47.0951710Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-23T10:05:47.0951799Z               "line": 156
2026-06-23T10:05:47.0951989Z             },
2026-06-23T10:05:47.0952060Z             {
2026-06-23T10:05:47.0952194Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0952271Z               "line": 987
2026-06-23T10:05:47.0952360Z             },
2026-06-23T10:05:47.0952461Z             {
2026-06-23T10:05:47.0952580Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T10:05:47.0952665Z               "line": 1009
2026-06-23T10:05:47.0952751Z             },
2026-06-23T10:05:47.0952834Z             {
2026-06-23T10:05:47.0952957Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T10:05:47.0953148Z               "line": 1419
2026-06-23T10:05:47.0953233Z             },
2026-06-23T10:05:47.0953319Z             {
2026-06-23T10:05:47.0953439Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T10:05:47.0953529Z               "line": 1036
2026-06-23T10:05:47.0953628Z             }
2026-06-23T10:05:47.0953714Z           ]
2026-06-23T10:05:47.0953797Z         }
2026-06-23T10:05:47.0953881Z       }
2026-06-23T10:05:47.0953967Z     },
2026-06-23T10:05:47.0954054Z     {
2026-06-23T10:05:47.0954150Z       "id": "REQ-SUBNET-8",
2026-06-23T10:05:47.0955223Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-23T10:05:47.0955327Z       "requiredStages": [
2026-06-23T10:05:47.0955414Z         "impl",
2026-06-23T10:05:47.0955495Z         "unit"
2026-06-23T10:05:47.0955580Z       ],
2026-06-23T10:05:47.0955676Z       "stages": {
2026-06-23T10:05:47.0955767Z         "doc": {
2026-06-23T10:05:47.0955862Z           "complete": false,
2026-06-23T10:05:47.0955957Z           "evidence": []
2026-06-23T10:05:47.0956044Z         },
2026-06-23T10:05:47.0956129Z         "impl": {
2026-06-23T10:05:47.0956210Z           "complete": true,
2026-06-23T10:05:47.0956310Z           "evidence": [
2026-06-23T10:05:47.0956411Z             {
2026-06-23T10:05:47.0956539Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0956630Z               "line": 4490
2026-06-23T10:05:47.0956716Z             },
2026-06-23T10:05:47.0956806Z             {
2026-06-23T10:05:47.0956911Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0957003Z               "line": 4519
2026-06-23T10:05:47.0957092Z             },
2026-06-23T10:05:47.0957181Z             {
2026-06-23T10:05:47.0957286Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0957372Z               "line": 4536
2026-06-23T10:05:47.0957461Z             },
2026-06-23T10:05:47.0957541Z             {
2026-06-23T10:05:47.0957647Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0957729Z               "line": 4559
2026-06-23T10:05:47.0957823Z             },
2026-06-23T10:05:47.0957913Z             {
2026-06-23T10:05:47.0958015Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0958100Z               "line": 4973
2026-06-23T10:05:47.0958185Z             }
2026-06-23T10:05:47.0958272Z           ]
2026-06-23T10:05:47.0958353Z         },
2026-06-23T10:05:47.0958438Z         "int": {
2026-06-23T10:05:47.0958538Z           "complete": false,
2026-06-23T10:05:47.0958634Z           "evidence": []
2026-06-23T10:05:47.0958719Z         },
2026-06-23T10:05:47.0958805Z         "unit": {
2026-06-23T10:05:47.0958906Z           "complete": true,
2026-06-23T10:05:47.0959077Z           "evidence": [
2026-06-23T10:05:47.0959173Z             {
2026-06-23T10:05:47.0959273Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0959363Z               "line": 11763
2026-06-23T10:05:47.0959444Z             },
2026-06-23T10:05:47.0959527Z             {
2026-06-23T10:05:47.0959640Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0959827Z               "line": 11779
2026-06-23T10:05:47.0959917Z             }
2026-06-23T10:05:47.0960001Z           ]
2026-06-23T10:05:47.0960077Z         }
2026-06-23T10:05:47.0960163Z       }
2026-06-23T10:05:47.0960245Z     },
2026-06-23T10:05:47.0960330Z     {
2026-06-23T10:05:47.0960425Z       "id": "REQ-TERM-1",
2026-06-23T10:05:47.0960592Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-23T10:05:47.0960701Z       "requiredStages": [
2026-06-23T10:05:47.0960778Z         "impl",
2026-06-23T10:05:47.0960860Z         "unit"
2026-06-23T10:05:47.0960946Z       ],
2026-06-23T10:05:47.0961156Z       "stages": {
2026-06-23T10:05:47.0961241Z         "doc": {
2026-06-23T10:05:47.0961340Z           "complete": false,
2026-06-23T10:05:47.0961427Z           "evidence": []
2026-06-23T10:05:47.0961513Z         },
2026-06-23T10:05:47.0961593Z         "impl": {
2026-06-23T10:05:47.0961684Z           "complete": true,
2026-06-23T10:05:47.0961776Z           "evidence": [
2026-06-23T10:05:47.0961857Z             {
2026-06-23T10:05:47.0961980Z               "path": "crates/spt-term/src/pty.rs",
2026-06-23T10:05:47.0962081Z               "line": 59
2026-06-23T10:05:47.0962167Z             },
2026-06-23T10:05:47.0962256Z             {
2026-06-23T10:05:47.0962364Z               "path": "crates/spt-term/src/pty.rs",
2026-06-23T10:05:47.0962456Z               "line": 234
2026-06-23T10:05:47.0962540Z             },
2026-06-23T10:05:47.0962630Z             {
2026-06-23T10:05:47.0962754Z               "path": "crates/spt-term/src/surface.rs",
2026-06-23T10:05:47.0962846Z               "line": 100
2026-06-23T10:05:47.0962930Z             }
2026-06-23T10:05:47.0963011Z           ]
2026-06-23T10:05:47.0963098Z         },
2026-06-23T10:05:47.0963174Z         "int": {
2026-06-23T10:05:47.0963263Z           "complete": false,
2026-06-23T10:05:47.0963360Z           "evidence": []
2026-06-23T10:05:47.0963441Z         },
2026-06-23T10:05:47.0963531Z         "unit": {
2026-06-23T10:05:47.0963616Z           "complete": true,
2026-06-23T10:05:47.0963718Z           "evidence": [
2026-06-23T10:05:47.0963803Z             {
2026-06-23T10:05:47.0963931Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-23T10:05:47.0964013Z               "line": 24
2026-06-23T10:05:47.0964103Z             },
2026-06-23T10:05:47.0964189Z             {
2026-06-23T10:05:47.0964309Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-23T10:05:47.0964395Z               "line": 56
2026-06-23T10:05:47.0964479Z             }
2026-06-23T10:05:47.0964561Z           ]
2026-06-23T10:05:47.0964643Z         }
2026-06-23T10:05:47.0964729Z       }
2026-06-23T10:05:47.0964813Z     },
2026-06-23T10:05:47.0964895Z     {
2026-06-23T10:05:47.0964991Z       "id": "REQ-TERM-2",
2026-06-23T10:05:47.0965170Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-23T10:05:47.0965266Z       "requiredStages": [
2026-06-23T10:05:47.0965352Z         "impl",
2026-06-23T10:05:47.0965440Z         "unit"
2026-06-23T10:05:47.0965530Z       ],
2026-06-23T10:05:47.0965611Z       "stages": {
2026-06-23T10:05:47.0965693Z         "doc": {
2026-06-23T10:05:47.0965783Z           "complete": false,
2026-06-23T10:05:47.0965878Z           "evidence": []
2026-06-23T10:05:47.0965965Z         },
2026-06-23T10:05:47.0966056Z         "impl": {
2026-06-23T10:05:47.0966150Z           "complete": true,
2026-06-23T10:05:47.0966241Z           "evidence": [
2026-06-23T10:05:47.0966351Z             {
2026-06-23T10:05:47.0966460Z               "path": "crates/spt-term/src/surface.rs",
2026-06-23T10:05:47.0966556Z               "line": 117
2026-06-23T10:05:47.0966646Z             },
2026-06-23T10:05:47.0966732Z             {
2026-06-23T10:05:47.0966846Z               "path": "crates/spt-term/src/surface.rs",
2026-06-23T10:05:47.0966929Z               "line": 127
2026-06-23T10:05:47.0967018Z             }
2026-06-23T10:05:47.0967099Z           ]
2026-06-23T10:05:47.0967195Z         },
2026-06-23T10:05:47.0967281Z         "int": {
2026-06-23T10:05:47.0967457Z           "complete": false,
2026-06-23T10:05:47.0967554Z           "evidence": []
2026-06-23T10:05:47.0967643Z         },
2026-06-23T10:05:47.0967728Z         "unit": {
2026-06-23T10:05:47.0967808Z           "complete": true,
2026-06-23T10:05:47.0967894Z           "evidence": [
2026-06-23T10:05:47.0967983Z             {
2026-06-23T10:05:47.0968096Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-23T10:05:47.0968188Z               "line": 46
2026-06-23T10:05:47.0968270Z             },
2026-06-23T10:05:47.0968355Z             {
2026-06-23T10:05:47.0968473Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-23T10:05:47.0968641Z               "line": 77
2026-06-23T10:05:47.0968730Z             }
2026-06-23T10:05:47.0968813Z           ]
2026-06-23T10:05:47.0968898Z         }
2026-06-23T10:05:47.0969094Z       }
2026-06-23T10:05:47.0969180Z     },
2026-06-23T10:05:47.0969261Z     {
2026-06-23T10:05:47.0969356Z       "id": "REQ-TERM-3",
2026-06-23T10:05:47.0969500Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-23T10:05:47.0969594Z       "requiredStages": [
2026-06-23T10:05:47.0969680Z         "impl",
2026-06-23T10:05:47.0969767Z         "unit"
2026-06-23T10:05:47.0969847Z       ],
2026-06-23T10:05:47.0969937Z       "stages": {
2026-06-23T10:05:47.0970018Z         "doc": {
2026-06-23T10:05:47.0970120Z           "complete": false,
2026-06-23T10:05:47.0970204Z           "evidence": []
2026-06-23T10:05:47.0970291Z         },
2026-06-23T10:05:47.0970377Z         "impl": {
2026-06-23T10:05:47.0970477Z           "complete": true,
2026-06-23T10:05:47.0973072Z           "evidence": [
2026-06-23T10:05:47.0973190Z             {
2026-06-23T10:05:47.0973323Z               "path": "crates/spt-term/src/stream.rs",
2026-06-23T10:05:47.0973406Z               "line": 71
2026-06-23T10:05:47.0973499Z             }
2026-06-23T10:05:47.0973585Z           ]
2026-06-23T10:05:47.0973673Z         },
2026-06-23T10:05:47.0973758Z         "int": {
2026-06-23T10:05:47.0973867Z           "complete": false,
2026-06-23T10:05:47.0973954Z           "evidence": []
2026-06-23T10:05:47.0974034Z         },
2026-06-23T10:05:47.0974124Z         "unit": {
2026-06-23T10:05:47.0974205Z           "complete": true,
2026-06-23T10:05:47.0974292Z           "evidence": [
2026-06-23T10:05:47.0974377Z             {
2026-06-23T10:05:47.0974511Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-23T10:05:47.0974602Z               "line": 37
2026-06-23T10:05:47.0974687Z             },
2026-06-23T10:05:47.0974768Z             {
2026-06-23T10:05:47.0974888Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-23T10:05:47.0974988Z               "line": 67
2026-06-23T10:05:47.0975074Z             }
2026-06-23T10:05:47.0975159Z           ]
2026-06-23T10:05:47.0975242Z         }
2026-06-23T10:05:47.0975326Z       }
2026-06-23T10:05:47.0975416Z     },
2026-06-23T10:05:47.0975499Z     {
2026-06-23T10:05:47.0975599Z       "id": "REQ-TERM-4",
2026-06-23T10:05:47.0976076Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-23T10:05:47.0976181Z       "requiredStages": [
2026-06-23T10:05:47.0976263Z         "impl",
2026-06-23T10:05:47.0976362Z         "unit",
2026-06-23T10:05:47.0976452Z         "int"
2026-06-23T10:05:47.0976535Z       ],
2026-06-23T10:05:47.0976625Z       "stages": {
2026-06-23T10:05:47.0976715Z         "doc": {
2026-06-23T10:05:47.0976821Z           "complete": false,
2026-06-23T10:05:47.0976920Z           "evidence": []
2026-06-23T10:05:47.0976996Z         },
2026-06-23T10:05:47.0977092Z         "impl": {
2026-06-23T10:05:47.0977183Z           "complete": true,
2026-06-23T10:05:47.0977273Z           "evidence": [
2026-06-23T10:05:47.0977359Z             {
2026-06-23T10:05:47.0977489Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T10:05:47.0977568Z               "line": 37
2026-06-23T10:05:47.0977784Z             },
2026-06-23T10:05:47.0977864Z             {
2026-06-23T10:05:47.0977993Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T10:05:47.0978080Z               "line": 25
2026-06-23T10:05:47.0978165Z             },
2026-06-23T10:05:47.0978250Z             {
2026-06-23T10:05:47.0978373Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T10:05:47.0978459Z               "line": 114
2026-06-23T10:05:47.0978538Z             },
2026-06-23T10:05:47.0978624Z             {
2026-06-23T10:05:47.0978748Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T10:05:47.0978929Z               "line": 267
2026-06-23T10:05:47.0979106Z             },
2026-06-23T10:05:47.0979192Z             {
2026-06-23T10:05:47.0979310Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T10:05:47.0979407Z               "line": 289
2026-06-23T10:05:47.0979492Z             },
2026-06-23T10:05:47.0979572Z             {
2026-06-23T10:05:47.0979702Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T10:05:47.0979773Z               "line": 307
2026-06-23T10:05:47.0979859Z             },
2026-06-23T10:05:47.0979944Z             {
2026-06-23T10:05:47.0980064Z               "path": "crates/spt-store/src/history.rs",
2026-06-23T10:05:47.0980145Z               "line": 33
2026-06-23T10:05:47.0980235Z             },
2026-06-23T10:05:47.0980317Z             {
2026-06-23T10:05:47.0980440Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.0980526Z               "line": 52
2026-06-23T10:05:47.0980613Z             },
2026-06-23T10:05:47.0980694Z             {
2026-06-23T10:05:47.0980812Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.0980893Z               "line": 180
2026-06-23T10:05:47.0980981Z             },
2026-06-23T10:05:47.0981065Z             {
2026-06-23T10:05:47.0981183Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.0981273Z               "line": 190
2026-06-23T10:05:47.0981370Z             },
2026-06-23T10:05:47.0981446Z             {
2026-06-23T10:05:47.0981569Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.0981661Z               "line": 250
2026-06-23T10:05:47.0981747Z             },
2026-06-23T10:05:47.0981836Z             {
2026-06-23T10:05:47.0981943Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.0982033Z               "line": 284
2026-06-23T10:05:47.0982108Z             },
2026-06-23T10:05:47.0982199Z             {
2026-06-23T10:05:47.0982323Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.0982404Z               "line": 295
2026-06-23T10:05:47.0982489Z             },
2026-06-23T10:05:47.0982577Z             {
2026-06-23T10:05:47.0982685Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0982771Z               "line": 1263
2026-06-23T10:05:47.0982857Z             }
2026-06-23T10:05:47.0982953Z           ]
2026-06-23T10:05:47.0983038Z         },
2026-06-23T10:05:47.0983114Z         "int": {
2026-06-23T10:05:47.0983206Z           "complete": true,
2026-06-23T10:05:47.0983301Z           "evidence": [
2026-06-23T10:05:47.0983381Z             {
2026-06-23T10:05:47.0983490Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-23T10:05:47.0983576Z               "line": 18
2026-06-23T10:05:47.0983660Z             }
2026-06-23T10:05:47.0983750Z           ]
2026-06-23T10:05:47.0983836Z         },
2026-06-23T10:05:47.0983927Z         "unit": {
2026-06-23T10:05:47.0984013Z           "complete": true,
2026-06-23T10:05:47.0984098Z           "evidence": [
2026-06-23T10:05:47.0984198Z             {
2026-06-23T10:05:47.0984308Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T10:05:47.0984407Z               "line": 364
2026-06-23T10:05:47.0984485Z             },
2026-06-23T10:05:47.0984576Z             {
2026-06-23T10:05:47.0984694Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T10:05:47.0984790Z               "line": 416
2026-06-23T10:05:47.0984962Z             },
2026-06-23T10:05:47.0985046Z             {
2026-06-23T10:05:47.0985162Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T10:05:47.0985243Z               "line": 426
2026-06-23T10:05:47.0985333Z             },
2026-06-23T10:05:47.0985419Z             {
2026-06-23T10:05:47.0985539Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T10:05:47.0985619Z               "line": 436
2026-06-23T10:05:47.0985700Z             },
2026-06-23T10:05:47.0985782Z             {
2026-06-23T10:05:47.0985900Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T10:05:47.0986093Z               "line": 456
2026-06-23T10:05:47.0986183Z             },
2026-06-23T10:05:47.0986266Z             {
2026-06-23T10:05:47.0986410Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T10:05:47.0986495Z               "line": 478
2026-06-23T10:05:47.0986574Z             },
2026-06-23T10:05:47.0986655Z             {
2026-06-23T10:05:47.0986785Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T10:05:47.0986871Z               "line": 491
2026-06-23T10:05:47.0986955Z             },
2026-06-23T10:05:47.0987042Z             {
2026-06-23T10:05:47.0987146Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T10:05:47.0987237Z               "line": 502
2026-06-23T10:05:47.0987322Z             },
2026-06-23T10:05:47.0987410Z             {
2026-06-23T10:05:47.0987524Z               "path": "crates/spt-store/src/history.rs",
2026-06-23T10:05:47.0987608Z               "line": 108
2026-06-23T10:05:47.0987700Z             },
2026-06-23T10:05:47.0987786Z             {
2026-06-23T10:05:47.0987909Z               "path": "crates/spt-term/src/digest.rs",
2026-06-23T10:05:47.0987991Z               "line": 119
2026-06-23T10:05:47.0988082Z             },
2026-06-23T10:05:47.0988166Z             {
2026-06-23T10:05:47.0988277Z               "path": "crates/spt-term/src/digest.rs",
2026-06-23T10:05:47.0988363Z               "line": 127
2026-06-23T10:05:47.0988448Z             },
2026-06-23T10:05:47.0988534Z             {
2026-06-23T10:05:47.0988645Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.0988735Z               "line": 474
2026-06-23T10:05:47.0988824Z             },
2026-06-23T10:05:47.0988909Z             {
2026-06-23T10:05:47.0989103Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.0989184Z               "line": 501
2026-06-23T10:05:47.0989270Z             },
2026-06-23T10:05:47.0989351Z             {
2026-06-23T10:05:47.0989455Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.0989560Z               "line": 520
2026-06-23T10:05:47.0989633Z             },
2026-06-23T10:05:47.0989718Z             {
2026-06-23T10:05:47.0989832Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.0989928Z               "line": 535
2026-06-23T10:05:47.0990004Z             },
2026-06-23T10:05:47.0990090Z             {
2026-06-23T10:05:47.0990214Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.0990301Z               "line": 561
2026-06-23T10:05:47.0990381Z             },
2026-06-23T10:05:47.0990461Z             {
2026-06-23T10:05:47.0990587Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.0990681Z               "line": 581
2026-06-23T10:05:47.0990762Z             },
2026-06-23T10:05:47.0990848Z             {
2026-06-23T10:05:47.0990954Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.0991048Z               "line": 591
2026-06-23T10:05:47.0991134Z             },
2026-06-23T10:05:47.0991216Z             {
2026-06-23T10:05:47.0991338Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.0991425Z               "line": 683
2026-06-23T10:05:47.0991507Z             },
2026-06-23T10:05:47.0991588Z             {
2026-06-23T10:05:47.0991715Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.0991901Z               "line": 885
2026-06-23T10:05:47.0991987Z             },
2026-06-23T10:05:47.0992077Z             {
2026-06-23T10:05:47.0992187Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0992268Z               "line": 11330
2026-06-23T10:05:47.0992349Z             }
2026-06-23T10:05:47.0992434Z           ]
2026-06-23T10:05:47.0992517Z         }
2026-06-23T10:05:47.0992602Z       }
2026-06-23T10:05:47.0992692Z     },
2026-06-23T10:05:47.0992779Z     {
2026-06-23T10:05:47.0992878Z       "id": "REQ-TERM-5",
2026-06-23T10:05:47.0994348Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-23T10:05:47.0994573Z       "requiredStages": [
2026-06-23T10:05:47.0994658Z         "doc",
2026-06-23T10:05:47.0994745Z         "impl",
2026-06-23T10:05:47.0994835Z         "unit",
2026-06-23T10:05:47.0994920Z         "int"
2026-06-23T10:05:47.0995001Z       ],
2026-06-23T10:05:47.0995083Z       "stages": {
2026-06-23T10:05:47.0995164Z         "doc": {
2026-06-23T10:05:47.0995264Z           "complete": true,
2026-06-23T10:05:47.0995350Z           "evidence": [
2026-06-23T10:05:47.0995441Z             {
2026-06-23T10:05:47.0995545Z               "path": "docs/MANIFEST.md",
2026-06-23T10:05:47.0995636Z               "line": 250
2026-06-23T10:05:47.0995722Z             }
2026-06-23T10:05:47.0995808Z           ]
2026-06-23T10:05:47.0995893Z         },
2026-06-23T10:05:47.0995979Z         "impl": {
2026-06-23T10:05:47.0996080Z           "complete": true,
2026-06-23T10:05:47.0996164Z           "evidence": [
2026-06-23T10:05:47.0996246Z             {
2026-06-23T10:05:47.0996395Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T10:05:47.0996489Z               "line": 75
2026-06-23T10:05:47.0996565Z             },
2026-06-23T10:05:47.0996653Z             {
2026-06-23T10:05:47.0996775Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T10:05:47.0996865Z               "line": 131
2026-06-23T10:05:47.0996955Z             },
2026-06-23T10:05:47.0997041Z             {
2026-06-23T10:05:47.0997153Z               "path": "crates/spt-live/src/digest.rs",
2026-06-23T10:05:47.0997253Z               "line": 22
2026-06-23T10:05:47.0997335Z             },
2026-06-23T10:05:47.0997421Z             {
2026-06-23T10:05:47.0997534Z               "path": "crates/spt-live/src/digest.rs",
2026-06-23T10:05:47.0997621Z               "line": 87
2026-06-23T10:05:47.0997711Z             },
2026-06-23T10:05:47.0997792Z             {
2026-06-23T10:05:47.0997902Z               "path": "crates/spt-term/src/digest.rs",
2026-06-23T10:05:47.0997984Z               "line": 30
2026-06-23T10:05:47.0998075Z             },
2026-06-23T10:05:47.0998154Z             {
2026-06-23T10:05:47.0998279Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.0998369Z               "line": 103
2026-06-23T10:05:47.0998455Z             },
2026-06-23T10:05:47.0998536Z             {
2026-06-23T10:05:47.0998652Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.0998736Z               "line": 167
2026-06-23T10:05:47.0998822Z             },
2026-06-23T10:05:47.0998904Z             {
2026-06-23T10:05:47.0999123Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.0999205Z               "line": 434
2026-06-23T10:05:47.0999300Z             },
2026-06-23T10:05:47.0999375Z             {
2026-06-23T10:05:47.0999483Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.0999565Z               "line": 6316
2026-06-23T10:05:47.0999744Z             },
2026-06-23T10:05:47.0999835Z             {
2026-06-23T10:05:47.0999940Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1000035Z               "line": 6849
2026-06-23T10:05:47.1000120Z             }
2026-06-23T10:05:47.1000203Z           ]
2026-06-23T10:05:47.1000288Z         },
2026-06-23T10:05:47.1000373Z         "int": {
2026-06-23T10:05:47.1000469Z           "complete": true,
2026-06-23T10:05:47.1000555Z           "evidence": [
2026-06-23T10:05:47.1000641Z             {
2026-06-23T10:05:47.1000794Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-23T10:05:47.1000984Z               "line": 17
2026-06-23T10:05:47.1001070Z             }
2026-06-23T10:05:47.1001152Z           ]
2026-06-23T10:05:47.1001241Z         },
2026-06-23T10:05:47.1001327Z         "unit": {
2026-06-23T10:05:47.1001428Z           "complete": true,
2026-06-23T10:05:47.1001514Z           "evidence": [
2026-06-23T10:05:47.1001603Z             {
2026-06-23T10:05:47.1001718Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T10:05:47.1001805Z               "line": 375
2026-06-23T10:05:47.1001899Z             },
2026-06-23T10:05:47.1001975Z             {
2026-06-23T10:05:47.1002096Z               "path": "crates/spt-live/src/digest.rs",
2026-06-23T10:05:47.1002186Z               "line": 162
2026-06-23T10:05:47.1002270Z             },
2026-06-23T10:05:47.1002355Z             {
2026-06-23T10:05:47.1002466Z               "path": "crates/spt-live/src/digest.rs",
2026-06-23T10:05:47.1002556Z               "line": 179
2026-06-23T10:05:47.1002642Z             },
2026-06-23T10:05:47.1002733Z             {
2026-06-23T10:05:47.1002848Z               "path": "crates/spt-live/src/digest.rs",
2026-06-23T10:05:47.1002933Z               "line": 201
2026-06-23T10:05:47.1003009Z             },
2026-06-23T10:05:47.1003096Z             {
2026-06-23T10:05:47.1003205Z               "path": "crates/spt-live/src/digest.rs",
2026-06-23T10:05:47.1003286Z               "line": 212
2026-06-23T10:05:47.1003372Z             },
2026-06-23T10:05:47.1003458Z             {
2026-06-23T10:05:47.1003571Z               "path": "crates/spt-live/src/digest.rs",
2026-06-23T10:05:47.1003653Z               "line": 223
2026-06-23T10:05:47.1003735Z             },
2026-06-23T10:05:47.1003825Z             {
2026-06-23T10:05:47.1003958Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.1004045Z               "line": 1572
2026-06-23T10:05:47.1004130Z             },
2026-06-23T10:05:47.1004211Z             {
2026-06-23T10:05:47.1004336Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.1004421Z               "line": 1615
2026-06-23T10:05:47.1004506Z             },
2026-06-23T10:05:47.1004582Z             {
2026-06-23T10:05:47.1004705Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.1004794Z               "line": 606
2026-06-23T10:05:47.1004889Z             },
2026-06-23T10:05:47.1004980Z             {
2026-06-23T10:05:47.1005100Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.1005185Z               "line": 634
2026-06-23T10:05:47.1005275Z             },
2026-06-23T10:05:47.1005362Z             {
2026-06-23T10:05:47.1005476Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.1005576Z               "line": 646
2026-06-23T10:05:47.1005667Z             },
2026-06-23T10:05:47.1005753Z             {
2026-06-23T10:05:47.1005861Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.1005944Z               "line": 669
2026-06-23T10:05:47.1006039Z             },
2026-06-23T10:05:47.1006124Z             {
2026-06-23T10:05:47.1006239Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1006344Z               "line": 9901
2026-06-23T10:05:47.1006449Z             },
2026-06-23T10:05:47.1006530Z             {
2026-06-23T10:05:47.1006626Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1006792Z               "line": 9959
2026-06-23T10:05:47.1006879Z             }
2026-06-23T10:05:47.1006960Z           ]
2026-06-23T10:05:47.1007049Z         }
2026-06-23T10:05:47.1007130Z       }
2026-06-23T10:05:47.1007218Z     },
2026-06-23T10:05:47.1007303Z     {
2026-06-23T10:05:47.1007401Z       "id": "REQ-TERM-6",
2026-06-23T10:05:47.1008477Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-23T10:05:47.1008681Z       "requiredStages": [
2026-06-23T10:05:47.1008791Z         "impl",
2026-06-23T10:05:47.1008878Z         "unit",
2026-06-23T10:05:47.1009043Z         "int"
2026-06-23T10:05:47.1009136Z       ],
2026-06-23T10:05:47.1009226Z       "stages": {
2026-06-23T10:05:47.1009306Z         "doc": {
2026-06-23T10:05:47.1009402Z           "complete": false,
2026-06-23T10:05:47.1009493Z           "evidence": []
2026-06-23T10:05:47.1009578Z         },
2026-06-23T10:05:47.1009664Z         "impl": {
2026-06-23T10:05:47.1009761Z           "complete": true,
2026-06-23T10:05:47.1009841Z           "evidence": [
2026-06-23T10:05:47.1009926Z             {
2026-06-23T10:05:47.1010048Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T10:05:47.1010135Z               "line": 132
2026-06-23T10:05:47.1010219Z             },
2026-06-23T10:05:47.1010313Z             {
2026-06-23T10:05:47.1010423Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T10:05:47.1010505Z               "line": 187
2026-06-23T10:05:47.1010590Z             },
2026-06-23T10:05:47.1010671Z             {
2026-06-23T10:05:47.1010796Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T10:05:47.1010882Z               "line": 17
2026-06-23T10:05:47.1010971Z             },
2026-06-23T10:05:47.1011053Z             {
2026-06-23T10:05:47.1011167Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T10:05:47.1011262Z               "line": 104
2026-06-23T10:05:47.1011344Z             },
2026-06-23T10:05:47.1011430Z             {
2026-06-23T10:05:47.1011549Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.1011635Z               "line": 319
2026-06-23T10:05:47.1011726Z             },
2026-06-23T10:05:47.1011806Z             {
2026-06-23T10:05:47.1011930Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.1012012Z               "line": 396
2026-06-23T10:05:47.1012112Z             }
2026-06-23T10:05:47.1012197Z           ]
2026-06-23T10:05:47.1012283Z         },
2026-06-23T10:05:47.1012375Z         "int": {
2026-06-23T10:05:47.1012464Z           "complete": true,
2026-06-23T10:05:47.1012559Z           "evidence": [
2026-06-23T10:05:47.1012642Z             {
2026-06-23T10:05:47.1012797Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-23T10:05:47.1012892Z               "line": 18
2026-06-23T10:05:47.1012973Z             }
2026-06-23T10:05:47.1013065Z           ]
2026-06-23T10:05:47.1013150Z         },
2026-06-23T10:05:47.1013240Z         "unit": {
2026-06-23T10:05:47.1013332Z           "complete": true,
2026-06-23T10:05:47.1013418Z           "evidence": [
2026-06-23T10:05:47.1013502Z             {
2026-06-23T10:05:47.1013613Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T10:05:47.1013703Z               "line": 135
2026-06-23T10:05:47.1013793Z             },
2026-06-23T10:05:47.1013874Z             {
2026-06-23T10:05:47.1013985Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T10:05:47.1014065Z               "line": 150
2026-06-23T10:05:47.1014151Z             },
2026-06-23T10:05:47.1014228Z             {
2026-06-23T10:05:47.1014347Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T10:05:47.1014533Z               "line": 166
2026-06-23T10:05:47.1014615Z             },
2026-06-23T10:05:47.1014694Z             {
2026-06-23T10:05:47.1014814Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T10:05:47.1014916Z               "line": 257
2026-06-23T10:05:47.1014995Z             },
2026-06-23T10:05:47.1015085Z             {
2026-06-23T10:05:47.1015194Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.1015289Z               "line": 738
2026-06-23T10:05:47.1015373Z             },
2026-06-23T10:05:47.1015458Z             {
2026-06-23T10:05:47.1015583Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.1015773Z               "line": 759
2026-06-23T10:05:47.1015865Z             },
2026-06-23T10:05:47.1015951Z             {
2026-06-23T10:05:47.1016069Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T10:05:47.1016165Z               "line": 726
2026-06-23T10:05:47.1016251Z             }
2026-06-23T10:05:47.1016336Z           ]
2026-06-23T10:05:47.1016441Z         }
2026-06-23T10:05:47.1016528Z       }
2026-06-23T10:05:47.1016613Z     },
2026-06-23T10:05:47.1016703Z     {
2026-06-23T10:05:47.1016785Z       "id": "REQ-TERM-7",
2026-06-23T10:05:47.1017900Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-23T10:05:47.1017999Z       "requiredStages": [
2026-06-23T10:05:47.1018085Z         "impl",
2026-06-23T10:05:47.1018166Z         "unit",
2026-06-23T10:05:47.1018240Z         "int"
2026-06-23T10:05:47.1018325Z       ],
2026-06-23T10:05:47.1018412Z       "stages": {
2026-06-23T10:05:47.1018494Z         "doc": {
2026-06-23T10:05:47.1018603Z           "complete": false,
2026-06-23T10:05:47.1018688Z           "evidence": []
2026-06-23T10:05:47.1018770Z         },
2026-06-23T10:05:47.1018851Z         "impl": {
2026-06-23T10:05:47.1019022Z           "complete": true,
2026-06-23T10:05:47.1019109Z           "evidence": [
2026-06-23T10:05:47.1019185Z             {
2026-06-23T10:05:47.1019308Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T10:05:47.1019391Z               "line": 133
2026-06-23T10:05:47.1019480Z             },
2026-06-23T10:05:47.1019561Z             {
2026-06-23T10:05:47.1019681Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T10:05:47.1019776Z               "line": 326
2026-06-23T10:05:47.1019861Z             },
2026-06-23T10:05:47.1019952Z             {
2026-06-23T10:05:47.1020058Z               "path": "crates/spt-live/src/inject.rs",
2026-06-23T10:05:47.1020152Z               "line": 15
2026-06-23T10:05:47.1020238Z             },
2026-06-23T10:05:47.1020321Z             {
2026-06-23T10:05:47.1020434Z               "path": "crates/spt-live/src/inject.rs",
2026-06-23T10:05:47.1020523Z               "line": 32
2026-06-23T10:05:47.1020613Z             },
2026-06-23T10:05:47.1020695Z             {
2026-06-23T10:05:47.1020817Z               "path": "crates/spt-store/src/history.rs",
2026-06-23T10:05:47.1020912Z               "line": 49
2026-06-23T10:05:47.1020984Z             },
2026-06-23T10:05:47.1021070Z             {
2026-06-23T10:05:47.1021193Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.1021289Z               "line": 286
2026-06-23T10:05:47.1021375Z             },
2026-06-23T10:05:47.1021461Z             {
2026-06-23T10:05:47.1021584Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.1021675Z               "line": 320
2026-06-23T10:05:47.1021756Z             }
2026-06-23T10:05:47.1021836Z           ]
2026-06-23T10:05:47.1021919Z         },
2026-06-23T10:05:47.1021995Z         "int": {
2026-06-23T10:05:47.1022214Z           "complete": true,
2026-06-23T10:05:47.1022310Z           "evidence": [
2026-06-23T10:05:47.1022395Z             {
2026-06-23T10:05:47.1022543Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-23T10:05:47.1022639Z               "line": 19
2026-06-23T10:05:47.1022719Z             }
2026-06-23T10:05:47.1022805Z           ]
2026-06-23T10:05:47.1022892Z         },
2026-06-23T10:05:47.1022987Z         "unit": {
2026-06-23T10:05:47.1023072Z           "complete": true,
2026-06-23T10:05:47.1023168Z           "evidence": [
2026-06-23T10:05:47.1023245Z             {
2026-06-23T10:05:47.1023452Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T10:05:47.1023534Z               "line": 455
2026-06-23T10:05:47.1023615Z             },
2026-06-23T10:05:47.1023696Z             {
2026-06-23T10:05:47.1023809Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T10:05:47.1023911Z               "line": 568
2026-06-23T10:05:47.1023997Z             },
2026-06-23T10:05:47.1024081Z             {
2026-06-23T10:05:47.1024197Z               "path": "crates/spt-live/src/inject.rs",
2026-06-23T10:05:47.1024292Z               "line": 58
2026-06-23T10:05:47.1024377Z             },
2026-06-23T10:05:47.1024459Z             {
2026-06-23T10:05:47.1024578Z               "path": "crates/spt-live/src/inject.rs",
2026-06-23T10:05:47.1024664Z               "line": 77
2026-06-23T10:05:47.1024754Z             },
2026-06-23T10:05:47.1024832Z             {
2026-06-23T10:05:47.1024940Z               "path": "crates/spt-live/src/inject.rs",
2026-06-23T10:05:47.1025040Z               "line": 87
2026-06-23T10:05:47.1025122Z             },
2026-06-23T10:05:47.1025213Z             {
2026-06-23T10:05:47.1025317Z               "path": "crates/spt-store/src/history.rs",
2026-06-23T10:05:47.1025403Z               "line": 94
2026-06-23T10:05:47.1025490Z             },
2026-06-23T10:05:47.1025574Z             {
2026-06-23T10:05:47.1025697Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.1025788Z               "line": 691
2026-06-23T10:05:47.1025877Z             },
2026-06-23T10:05:47.1025962Z             {
2026-06-23T10:05:47.1026081Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T10:05:47.1026168Z               "line": 716
2026-06-23T10:05:47.1026253Z             }
2026-06-23T10:05:47.1026343Z           ]
2026-06-23T10:05:47.1026434Z         }
2026-06-23T10:05:47.1026525Z       }
2026-06-23T10:05:47.1026610Z     },
2026-06-23T10:05:47.1026696Z     {
2026-06-23T10:05:47.1026792Z       "id": "REQ-UPD-1",
2026-06-23T10:05:47.1026920Z       "title": "Peer-propagated update over P2P",
2026-06-23T10:05:47.1027026Z       "requiredStages": [
2026-06-23T10:05:47.1027107Z         "impl",
2026-06-23T10:05:47.1027197Z         "unit",
2026-06-23T10:05:47.1027282Z         "int"
2026-06-23T10:05:47.1027369Z       ],
2026-06-23T10:05:47.1027455Z       "stages": {
2026-06-23T10:05:47.1027545Z         "doc": {
2026-06-23T10:05:47.1027650Z           "complete": false,
2026-06-23T10:05:47.1027742Z           "evidence": []
2026-06-23T10:05:47.1027821Z         },
2026-06-23T10:05:47.1027907Z         "impl": {
2026-06-23T10:05:47.1028004Z           "complete": true,
2026-06-23T10:05:47.1028089Z           "evidence": [
2026-06-23T10:05:47.1028174Z             {
2026-06-23T10:05:47.1028295Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T10:05:47.1028385Z               "line": 28
2026-06-23T10:05:47.1028469Z             },
2026-06-23T10:05:47.1028550Z             {
2026-06-23T10:05:47.1028674Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T10:05:47.1028763Z               "line": 103
2026-06-23T10:05:47.1028848Z             },
2026-06-23T10:05:47.1028929Z             {
2026-06-23T10:05:47.1029139Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T10:05:47.1029234Z               "line": 342
2026-06-23T10:05:47.1029316Z             },
2026-06-23T10:05:47.1029397Z             {
2026-06-23T10:05:47.1029520Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1029712Z               "line": 22
2026-06-23T10:05:47.1029787Z             },
2026-06-23T10:05:47.1029868Z             {
2026-06-23T10:05:47.1029988Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1030078Z               "line": 207
2026-06-23T10:05:47.1030155Z             },
2026-06-23T10:05:47.1030236Z             {
2026-06-23T10:05:47.1030346Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1030441Z               "line": 283
2026-06-23T10:05:47.1030527Z             },
2026-06-23T10:05:47.1030717Z             {
2026-06-23T10:05:47.1030832Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1030928Z               "line": 340
2026-06-23T10:05:47.1031008Z             },
2026-06-23T10:05:47.1031084Z             {
2026-06-23T10:05:47.1031198Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-23T10:05:47.1031283Z               "line": 37
2026-06-23T10:05:47.1031367Z             }
2026-06-23T10:05:47.1031448Z           ]
2026-06-23T10:05:47.1031534Z         },
2026-06-23T10:05:47.1031616Z         "int": {
2026-06-23T10:05:47.1031701Z           "complete": true,
2026-06-23T10:05:47.1031796Z           "evidence": [
2026-06-23T10:05:47.1031883Z             {
2026-06-23T10:05:47.1032002Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T10:05:47.1032091Z               "line": 207
2026-06-23T10:05:47.1032179Z             },
2026-06-23T10:05:47.1032259Z             {
2026-06-23T10:05:47.1032373Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T10:05:47.1032474Z               "line": 1084
2026-06-23T10:05:47.1032555Z             }
2026-06-23T10:05:47.1032640Z           ]
2026-06-23T10:05:47.1032721Z         },
2026-06-23T10:05:47.1032823Z         "unit": {
2026-06-23T10:05:47.1032908Z           "complete": true,
2026-06-23T10:05:47.1032998Z           "evidence": [
2026-06-23T10:05:47.1033079Z             {
2026-06-23T10:05:47.1033199Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1033293Z               "line": 490
2026-06-23T10:05:47.1033379Z             },
2026-06-23T10:05:47.1033467Z             {
2026-06-23T10:05:47.1033589Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1033680Z               "line": 616
2026-06-23T10:05:47.1033762Z             },
2026-06-23T10:05:47.1033848Z             {
2026-06-23T10:05:47.1033979Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-23T10:05:47.1034065Z               "line": 277
2026-06-23T10:05:47.1034152Z             },
2026-06-23T10:05:47.1034237Z             {
2026-06-23T10:05:47.1034360Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-23T10:05:47.1034452Z               "line": 124
2026-06-23T10:05:47.1034538Z             },
2026-06-23T10:05:47.1034622Z             {
2026-06-23T10:05:47.1034743Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-23T10:05:47.1034842Z               "line": 200
2026-06-23T10:05:47.1034923Z             }
2026-06-23T10:05:47.1035004Z           ]
2026-06-23T10:05:47.1035091Z         }
2026-06-23T10:05:47.1035180Z       }
2026-06-23T10:05:47.1035266Z     },
2026-06-23T10:05:47.1035343Z     {
2026-06-23T10:05:47.1035444Z       "id": "REQ-UPD-2",
2026-06-23T10:05:47.1035590Z       "title": "All binaries signature-verified before handoff",
2026-06-23T10:05:47.1035673Z       "requiredStages": [
2026-06-23T10:05:47.1035759Z         "impl",
2026-06-23T10:05:47.1035843Z         "unit"
2026-06-23T10:05:47.1035934Z       ],
2026-06-23T10:05:47.1036021Z       "stages": {
2026-06-23T10:05:47.1036116Z         "doc": {
2026-06-23T10:05:47.1036219Z           "complete": false,
2026-06-23T10:05:47.1036310Z           "evidence": []
2026-06-23T10:05:47.1036410Z         },
2026-06-23T10:05:47.1036498Z         "impl": {
2026-06-23T10:05:47.1036588Z           "complete": true,
2026-06-23T10:05:47.1036680Z           "evidence": [
2026-06-23T10:05:47.1036846Z             {
2026-06-23T10:05:47.1036971Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T10:05:47.1037052Z               "line": 343
2026-06-23T10:05:47.1037137Z             },
2026-06-23T10:05:47.1037223Z             {
2026-06-23T10:05:47.1037353Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T10:05:47.1037434Z               "line": 476
2026-06-23T10:05:47.1037528Z             },
2026-06-23T10:05:47.1037615Z             {
2026-06-23T10:05:47.1037729Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1037814Z               "line": 29
2026-06-23T10:05:47.1037968Z             },
2026-06-23T10:05:47.1038048Z             {
2026-06-23T10:05:47.1038162Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1038244Z               "line": 281
2026-06-23T10:05:47.1038335Z             },
2026-06-23T10:05:47.1038420Z             {
2026-06-23T10:05:47.1038530Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1038612Z               "line": 298
2026-06-23T10:05:47.1038700Z             },
2026-06-23T10:05:47.1038787Z             {
2026-06-23T10:05:47.1038908Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1039067Z               "line": 418
2026-06-23T10:05:47.1039143Z             },
2026-06-23T10:05:47.1039229Z             {
2026-06-23T10:05:47.1039333Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1039437Z               "line": 568
2026-06-23T10:05:47.1041951Z             },
2026-06-23T10:05:47.1042061Z             {
2026-06-23T10:05:47.1042214Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T10:05:47.1042304Z               "line": 155
2026-06-23T10:05:47.1042399Z             }
2026-06-23T10:05:47.1042476Z           ]
2026-06-23T10:05:47.1042567Z         },
2026-06-23T10:05:47.1042651Z         "int": {
2026-06-23T10:05:47.1042744Z           "complete": false,
2026-06-23T10:05:47.1042834Z           "evidence": []
2026-06-23T10:05:47.1042905Z         },
2026-06-23T10:05:47.1042995Z         "unit": {
2026-06-23T10:05:47.1043082Z           "complete": true,
2026-06-23T10:05:47.1043182Z           "evidence": [
2026-06-23T10:05:47.1043272Z             {
2026-06-23T10:05:47.1043397Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1043487Z               "line": 760
2026-06-23T10:05:47.1043572Z             },
2026-06-23T10:05:47.1043654Z             {
2026-06-23T10:05:47.1043764Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1043849Z               "line": 821
2026-06-23T10:05:47.1043939Z             },
2026-06-23T10:05:47.1044027Z             {
2026-06-23T10:05:47.1044149Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1044240Z               "line": 835
2026-06-23T10:05:47.1044332Z             },
2026-06-23T10:05:47.1044412Z             {
2026-06-23T10:05:47.1044534Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1044634Z               "line": 851
2026-06-23T10:05:47.1044707Z             },
2026-06-23T10:05:47.1044797Z             {
2026-06-23T10:05:47.1044896Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1044983Z               "line": 942
2026-06-23T10:05:47.1045074Z             },
2026-06-23T10:05:47.1045154Z             {
2026-06-23T10:05:47.1045279Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T10:05:47.1045374Z               "line": 414
2026-06-23T10:05:47.1045460Z             },
2026-06-23T10:05:47.1045545Z             {
2026-06-23T10:05:47.1045665Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T10:05:47.1045760Z               "line": 427
2026-06-23T10:05:47.1045845Z             },
2026-06-23T10:05:47.1045933Z             {
2026-06-23T10:05:47.1046060Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-23T10:05:47.1046151Z               "line": 410
2026-06-23T10:05:47.1046233Z             }
2026-06-23T10:05:47.1046475Z           ]
2026-06-23T10:05:47.1046562Z         }
2026-06-23T10:05:47.1046652Z       }
2026-06-23T10:05:47.1046741Z     },
2026-06-23T10:05:47.1046827Z     {
2026-06-23T10:05:47.1046927Z       "id": "REQ-UPD-3",
2026-06-23T10:05:47.1047096Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-23T10:05:47.1047202Z       "requiredStages": [
2026-06-23T10:05:47.1047283Z         "impl",
2026-06-23T10:05:47.1047369Z         "unit",
2026-06-23T10:05:47.1047459Z         "int"
2026-06-23T10:05:47.1047540Z       ],
2026-06-23T10:05:47.1047631Z       "stages": {
2026-06-23T10:05:47.1047802Z         "doc": {
2026-06-23T10:05:47.1047903Z           "complete": false,
2026-06-23T10:05:47.1047989Z           "evidence": []
2026-06-23T10:05:47.1048073Z         },
2026-06-23T10:05:47.1048156Z         "impl": {
2026-06-23T10:05:47.1048246Z           "complete": true,
2026-06-23T10:05:47.1048337Z           "evidence": [
2026-06-23T10:05:47.1048412Z             {
2026-06-23T10:05:47.1048547Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T10:05:47.1048627Z               "line": 40
2026-06-23T10:05:47.1048708Z             },
2026-06-23T10:05:47.1048795Z             {
2026-06-23T10:05:47.1048914Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T10:05:47.1049095Z               "line": 87
2026-06-23T10:05:47.1049181Z             },
2026-06-23T10:05:47.1049280Z             {
2026-06-23T10:05:47.1049405Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:47.1049506Z               "line": 1164
2026-06-23T10:05:47.1049590Z             },
2026-06-23T10:05:47.1049671Z             {
2026-06-23T10:05:47.1049789Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:47.1049884Z               "line": 1994
2026-06-23T10:05:47.1049968Z             },
2026-06-23T10:05:47.1050049Z             {
2026-06-23T10:05:47.1050169Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T10:05:47.1050254Z               "line": 26
2026-06-23T10:05:47.1050340Z             },
2026-06-23T10:05:47.1050427Z             {
2026-06-23T10:05:47.1050537Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T10:05:47.1050636Z               "line": 114
2026-06-23T10:05:47.1050722Z             },
2026-06-23T10:05:47.1050799Z             {
2026-06-23T10:05:47.1050917Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T10:05:47.1050998Z               "line": 246
2026-06-23T10:05:47.1051085Z             },
2026-06-23T10:05:47.1051175Z             {
2026-06-23T10:05:47.1051275Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1051371Z               "line": 2796
2026-06-23T10:05:47.1051452Z             }
2026-06-23T10:05:47.1051537Z           ]
2026-06-23T10:05:47.1051623Z         },
2026-06-23T10:05:47.1051710Z         "int": {
2026-06-23T10:05:47.1051799Z           "complete": true,
2026-06-23T10:05:47.1051885Z           "evidence": [
2026-06-23T10:05:47.1051967Z             {
2026-06-23T10:05:47.1052100Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-23T10:05:47.1052190Z               "line": 58
2026-06-23T10:05:47.1052275Z             }
2026-06-23T10:05:47.1052366Z           ]
2026-06-23T10:05:47.1052445Z         },
2026-06-23T10:05:47.1052540Z         "unit": {
2026-06-23T10:05:47.1052626Z           "complete": true,
2026-06-23T10:05:47.1052712Z           "evidence": [
2026-06-23T10:05:47.1052793Z             {
2026-06-23T10:05:47.1052916Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T10:05:47.1053003Z               "line": 532
2026-06-23T10:05:47.1053094Z             },
2026-06-23T10:05:47.1053179Z             {
2026-06-23T10:05:47.1053299Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T10:05:47.1053375Z               "line": 587
2026-06-23T10:05:47.1053460Z             },
2026-06-23T10:05:47.1053545Z             {
2026-06-23T10:05:47.1053670Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T10:05:47.1053875Z               "line": 655
2026-06-23T10:05:47.1053967Z             },
2026-06-23T10:05:47.1054047Z             {
2026-06-23T10:05:47.1054171Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T10:05:47.1054267Z               "line": 1102
2026-06-23T10:05:47.1054352Z             },
2026-06-23T10:05:47.1054438Z             {
2026-06-23T10:05:47.1054558Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T10:05:47.1054653Z               "line": 271
2026-06-23T10:05:47.1054738Z             },
2026-06-23T10:05:47.1054819Z             {
2026-06-23T10:05:47.1054944Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T10:05:47.1055132Z               "line": 295
2026-06-23T10:05:47.1055219Z             },
2026-06-23T10:05:47.1055305Z             {
2026-06-23T10:05:47.1055433Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T10:05:47.1055524Z               "line": 316
2026-06-23T10:05:47.1055611Z             },
2026-06-23T10:05:47.1055700Z             {
2026-06-23T10:05:47.1055805Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T10:05:47.1055896Z               "line": 332
2026-06-23T10:05:47.1055982Z             }
2026-06-23T10:05:47.1056072Z           ]
2026-06-23T10:05:47.1056158Z         }
2026-06-23T10:05:47.1056244Z       }
2026-06-23T10:05:47.1056335Z     },
2026-06-23T10:05:47.1056415Z     {
2026-06-23T10:05:47.1056507Z       "id": "REQ-UPD-4",
2026-06-23T10:05:47.1056687Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-23T10:05:47.1056793Z       "requiredStages": [
2026-06-23T10:05:47.1056879Z         "impl",
2026-06-23T10:05:47.1056968Z         "unit"
2026-06-23T10:05:47.1057059Z       ],
2026-06-23T10:05:47.1057147Z       "stages": {
2026-06-23T10:05:47.1057232Z         "doc": {
2026-06-23T10:05:47.1057330Z           "complete": false,
2026-06-23T10:05:47.1057420Z           "evidence": []
2026-06-23T10:05:47.1057501Z         },
2026-06-23T10:05:47.1057586Z         "impl": {
2026-06-23T10:05:47.1057685Z           "complete": true,
2026-06-23T10:05:47.1057771Z           "evidence": [
2026-06-23T10:05:47.1057858Z             {
2026-06-23T10:05:47.1057985Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T10:05:47.1058076Z               "line": 41
2026-06-23T10:05:47.1058163Z             },
2026-06-23T10:05:47.1058239Z             {
2026-06-23T10:05:47.1058362Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T10:05:47.1058439Z               "line": 88
2026-06-23T10:05:47.1058525Z             },
2026-06-23T10:05:47.1058610Z             {
2026-06-23T10:05:47.1058740Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-23T10:05:47.1058835Z               "line": 23
2026-06-23T10:05:47.1058911Z             },
2026-06-23T10:05:47.1059083Z             {
2026-06-23T10:05:47.1059197Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-23T10:05:47.1059292Z               "line": 56
2026-06-23T10:05:47.1059384Z             },
2026-06-23T10:05:47.1059464Z             {
2026-06-23T10:05:47.1059578Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-23T10:05:47.1059650Z               "line": 77
2026-06-23T10:05:47.1059746Z             },
2026-06-23T10:05:47.1059821Z             {
2026-06-23T10:05:47.1059941Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T10:05:47.1060023Z               "line": 434
2026-06-23T10:05:47.1060108Z             },
2026-06-23T10:05:47.1060187Z             {
2026-06-23T10:05:47.1060307Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T10:05:47.1060402Z               "line": 108
2026-06-23T10:05:47.1060481Z             },
2026-06-23T10:05:47.1060566Z             {
2026-06-23T10:05:47.1060686Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:47.1060773Z               "line": 270
2026-06-23T10:05:47.1060867Z             },
2026-06-23T10:05:47.1060948Z             {
2026-06-23T10:05:47.1061058Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1061253Z               "line": 2795
2026-06-23T10:05:47.1061340Z             }
2026-06-23T10:05:47.1061421Z           ]
2026-06-23T10:05:47.1061505Z         },
2026-06-23T10:05:47.1061597Z         "int": {
2026-06-23T10:05:47.1061693Z           "complete": false,
2026-06-23T10:05:47.1061774Z           "evidence": []
2026-06-23T10:05:47.1061859Z         },
2026-06-23T10:05:47.1061936Z         "unit": {
2026-06-23T10:05:47.1062035Z           "complete": true,
2026-06-23T10:05:47.1062126Z           "evidence": [
2026-06-23T10:05:47.1062207Z             {
2026-06-23T10:05:47.1062327Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T10:05:47.1062512Z               "line": 583
2026-06-23T10:05:47.1062599Z             },
2026-06-23T10:05:47.1062679Z             {
2026-06-23T10:05:47.1062807Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T10:05:47.1062888Z               "line": 708
2026-06-23T10:05:47.1062983Z             },
2026-06-23T10:05:47.1063071Z             {
2026-06-23T10:05:47.1063196Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T10:05:47.1063282Z               "line": 384
2026-06-23T10:05:47.1063367Z             },
2026-06-23T10:05:47.1063453Z             {
2026-06-23T10:05:47.1063573Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-23T10:05:47.1063659Z               "line": 102
2026-06-23T10:05:47.1063734Z             },
2026-06-23T10:05:47.1063820Z             {
2026-06-23T10:05:47.1063939Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-23T10:05:47.1064034Z               "line": 123
2026-06-23T10:05:47.1064115Z             },
2026-06-23T10:05:47.1064193Z             {
2026-06-23T10:05:47.1064316Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-23T10:05:47.1064402Z               "line": 142
2026-06-23T10:05:47.1064493Z             },
2026-06-23T10:05:47.1064578Z             {
2026-06-23T10:05:47.1064688Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T10:05:47.1064779Z               "line": 582
2026-06-23T10:05:47.1064865Z             },
2026-06-23T10:05:47.1064950Z             {
2026-06-23T10:05:47.1065065Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T10:05:47.1065157Z               "line": 566
2026-06-23T10:05:47.1065236Z             },
2026-06-23T10:05:47.1065327Z             {
2026-06-23T10:05:47.1065437Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1065523Z               "line": 9652
2026-06-23T10:05:47.1065612Z             }
2026-06-23T10:05:47.1065697Z           ]
2026-06-23T10:05:47.1065784Z         }
2026-06-23T10:05:47.1065866Z       }
2026-06-23T10:05:47.1065955Z     },
2026-06-23T10:05:47.1066036Z     {
2026-06-23T10:05:47.1066123Z       "id": "REQ-UPD-5",
2026-06-23T10:05:47.1066270Z       "title": "spt-core ripple-updates registered adapters",
2026-06-23T10:05:47.1066355Z       "requiredStages": [
2026-06-23T10:05:47.1066447Z         "impl",
2026-06-23T10:05:47.1066538Z         "unit"
2026-06-23T10:05:47.1066632Z       ],
2026-06-23T10:05:47.1066723Z       "stages": {
2026-06-23T10:05:47.1066809Z         "doc": {
2026-06-23T10:05:47.1066904Z           "complete": false,
2026-06-23T10:05:47.1066989Z           "evidence": []
2026-06-23T10:05:47.1067072Z         },
2026-06-23T10:05:47.1067162Z         "impl": {
2026-06-23T10:05:47.1067257Z           "complete": true,
2026-06-23T10:05:47.1067353Z           "evidence": [
2026-06-23T10:05:47.1067420Z             {
2026-06-23T10:05:47.1067552Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T10:05:47.1067634Z               "line": 27
2026-06-23T10:05:47.1067721Z             },
2026-06-23T10:05:47.1067805Z             {
2026-06-23T10:05:47.1067938Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T10:05:47.1068034Z               "line": 87
2026-06-23T10:05:47.1068123Z             },
2026-06-23T10:05:47.1068207Z             {
2026-06-23T10:05:47.1068331Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T10:05:47.1068503Z               "line": 145
2026-06-23T10:05:47.1068593Z             },
2026-06-23T10:05:47.1068680Z             {
2026-06-23T10:05:47.1068799Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1068879Z               "line": 502
2026-06-23T10:05:47.1069128Z             },
2026-06-23T10:05:47.1069208Z             {
2026-06-23T10:05:47.1069333Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1069428Z               "line": 556
2026-06-23T10:05:47.1069677Z             }
2026-06-23T10:05:47.1069871Z           ]
2026-06-23T10:05:47.1070139Z         },
2026-06-23T10:05:47.1070306Z         "int": {
2026-06-23T10:05:47.1070481Z           "complete": false,
2026-06-23T10:05:47.1070682Z           "evidence": []
2026-06-23T10:05:47.1070867Z         },
2026-06-23T10:05:47.1071046Z         "unit": {
2026-06-23T10:05:47.1071256Z           "complete": true,
2026-06-23T10:05:47.1071451Z           "evidence": [
2026-06-23T10:05:47.1071632Z             {
2026-06-23T10:05:47.1071848Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T10:05:47.1072109Z               "line": 278
2026-06-23T10:05:47.1072295Z             },
2026-06-23T10:05:47.1072452Z             {
2026-06-23T10:05:47.1072662Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T10:05:47.1072925Z               "line": 292
2026-06-23T10:05:47.1073112Z             },
2026-06-23T10:05:47.1073286Z             {
2026-06-23T10:05:47.1073496Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T10:05:47.1073761Z               "line": 306
2026-06-23T10:05:47.1073937Z             },
2026-06-23T10:05:47.1074104Z             {
2026-06-23T10:05:47.1074299Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T10:05:47.1074553Z               "line": 320
2026-06-23T10:05:47.1074739Z             },
2026-06-23T10:05:47.1074900Z             {
2026-06-23T10:05:47.1075102Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T10:05:47.1075349Z               "line": 354
2026-06-23T10:05:47.1075534Z             },
2026-06-23T10:05:47.1075702Z             {
2026-06-23T10:05:47.1075901Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.1076153Z               "line": 1118
2026-06-23T10:05:47.1076354Z             }
2026-06-23T10:05:47.1076529Z           ]
2026-06-23T10:05:47.1076693Z         }
2026-06-23T10:05:47.1076868Z       }
2026-06-23T10:05:47.1077026Z     },
2026-06-23T10:05:47.1077187Z     {
2026-06-23T10:05:47.1077355Z       "id": "REQ-UPD-6",
2026-06-23T10:05:47.1078262Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-23T10:05:47.1079302Z       "requiredStages": [
2026-06-23T10:05:47.1079492Z         "doc",
2026-06-23T10:05:47.1079659Z         "impl",
2026-06-23T10:05:47.1079826Z         "unit",
2026-06-23T10:05:47.1079993Z         "int"
2026-06-23T10:05:47.1080160Z       ],
2026-06-23T10:05:47.1080322Z       "stages": {
2026-06-23T10:05:47.1080500Z         "doc": {
2026-06-23T10:05:47.1080694Z           "complete": true,
2026-06-23T10:05:47.1080885Z           "evidence": [
2026-06-23T10:05:47.1081066Z             {
2026-06-23T10:05:47.1081266Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-23T10:05:47.1081508Z               "line": 3
2026-06-23T10:05:47.1081677Z             },
2026-06-23T10:05:47.1081845Z             {
2026-06-23T10:05:47.1082020Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-23T10:05:47.1082255Z               "line": 3
2026-06-23T10:05:47.1082431Z             },
2026-06-23T10:05:47.1082598Z             {
2026-06-23T10:05:47.1082818Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-23T10:05:47.1083118Z               "line": 3
2026-06-23T10:05:47.1083419Z             }
2026-06-23T10:05:47.1083585Z           ]
2026-06-23T10:05:47.1083753Z         },
2026-06-23T10:05:47.1083913Z         "impl": {
2026-06-23T10:05:47.1084122Z           "complete": true,
2026-06-23T10:05:47.1084354Z           "evidence": [
2026-06-23T10:05:47.1084525Z             {
2026-06-23T10:05:47.1084722Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T10:05:47.1084974Z               "line": 76
2026-06-23T10:05:47.1085164Z             },
2026-06-23T10:05:47.1085337Z             {
2026-06-23T10:05:47.1085551Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T10:05:47.1085933Z               "line": 212
2026-06-23T10:05:47.1086118Z             },
2026-06-23T10:05:47.1086286Z             {
2026-06-23T10:05:47.1086480Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T10:05:47.1086727Z               "line": 69
2026-06-23T10:05:47.1086909Z             },
2026-06-23T10:05:47.1087080Z             {
2026-06-23T10:05:47.1087276Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T10:05:47.1087524Z               "line": 133
2026-06-23T10:05:47.1087705Z             },
2026-06-23T10:05:47.1087868Z             {
2026-06-23T10:05:47.1088057Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T10:05:47.1088301Z               "line": 243
2026-06-23T10:05:47.1088488Z             },
2026-06-23T10:05:47.1088644Z             {
2026-06-23T10:05:47.1088832Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T10:05:47.1089163Z               "line": 406
2026-06-23T10:05:47.1089347Z             },
2026-06-23T10:05:47.1089509Z             {
2026-06-23T10:05:47.1089703Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T10:05:47.1089943Z               "line": 534
2026-06-23T10:05:47.1090120Z             },
2026-06-23T10:05:47.1090271Z             {
2026-06-23T10:05:47.1090486Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T10:05:47.1090725Z               "line": 548
2026-06-23T10:05:47.1090906Z             },
2026-06-23T10:05:47.1091060Z             {
2026-06-23T10:05:47.1091263Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T10:05:47.1091501Z               "line": 603
2026-06-23T10:05:47.1091684Z             },
2026-06-23T10:05:47.1091850Z             {
2026-06-23T10:05:47.1092054Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T10:05:47.1092300Z               "line": 634
2026-06-23T10:05:47.1092486Z             },
2026-06-23T10:05:47.1092648Z             {
2026-06-23T10:05:47.1092857Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-23T10:05:47.1093111Z               "line": 137
2026-06-23T10:05:47.1093287Z             },
2026-06-23T10:05:47.1093459Z             {
2026-06-23T10:05:47.1093659Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-23T10:05:47.1093917Z               "line": 184
2026-06-23T10:05:47.1094101Z             },
2026-06-23T10:05:47.1094261Z             {
2026-06-23T10:05:47.1094463Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1094710Z               "line": 78
2026-06-23T10:05:47.1094890Z             },
2026-06-23T10:05:47.1095043Z             {
2026-06-23T10:05:47.1095249Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1095495Z               "line": 114
2026-06-23T10:05:47.1095677Z             },
2026-06-23T10:05:47.1095845Z             {
2026-06-23T10:05:47.1096035Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1096278Z               "line": 185
2026-06-23T10:05:47.1096459Z             },
2026-06-23T10:05:47.1096626Z             {
2026-06-23T10:05:47.1096818Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1097070Z               "line": 260
2026-06-23T10:05:47.1097260Z             },
2026-06-23T10:05:47.1097426Z             {
2026-06-23T10:05:47.1097617Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1097974Z               "line": 292
2026-06-23T10:05:47.1098156Z             },
2026-06-23T10:05:47.1098327Z             {
2026-06-23T10:05:47.1098532Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1098767Z               "line": 323
2026-06-23T10:05:47.1099024Z             },
2026-06-23T10:05:47.1099185Z             {
2026-06-23T10:05:47.1099387Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1099623Z               "line": 346
2026-06-23T10:05:47.1099808Z             },
2026-06-23T10:05:47.1099968Z             {
2026-06-23T10:05:47.1100273Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1100517Z               "line": 388
2026-06-23T10:05:47.1100699Z             },
2026-06-23T10:05:47.1100865Z             {
2026-06-23T10:05:47.1101061Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1101290Z               "line": 398
2026-06-23T10:05:47.1101480Z             },
2026-06-23T10:05:47.1101644Z             {
2026-06-23T10:05:47.1101838Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1102081Z               "line": 410
2026-06-23T10:05:47.1102273Z             },
2026-06-23T10:05:47.1102438Z             {
2026-06-23T10:05:47.1102628Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1102869Z               "line": 420
2026-06-23T10:05:47.1103055Z             },
2026-06-23T10:05:47.1103213Z             {
2026-06-23T10:05:47.1103413Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1103661Z               "line": 439
2026-06-23T10:05:47.1103842Z             },
2026-06-23T10:05:47.1104004Z             {
2026-06-23T10:05:47.1104196Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1104433Z               "line": 449
2026-06-23T10:05:47.1104619Z             },
2026-06-23T10:05:47.1104778Z             {
2026-06-23T10:05:47.1104972Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1105223Z               "line": 94
2026-06-23T10:05:47.1105417Z             },
2026-06-23T10:05:47.1105575Z             {
2026-06-23T10:05:47.1105765Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1106007Z               "line": 120
2026-06-23T10:05:47.1106185Z             },
2026-06-23T10:05:47.1109750Z             {
2026-06-23T10:05:47.1110018Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1110293Z               "line": 135
2026-06-23T10:05:47.1110481Z             },
2026-06-23T10:05:47.1110668Z             {
2026-06-23T10:05:47.1110872Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1111153Z               "line": 162
2026-06-23T10:05:47.1111335Z             },
2026-06-23T10:05:47.1111502Z             {
2026-06-23T10:05:47.1111693Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1111927Z               "line": 174
2026-06-23T10:05:47.1112117Z             },
2026-06-23T10:05:47.1112279Z             {
2026-06-23T10:05:47.1112471Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1112698Z               "line": 195
2026-06-23T10:05:47.1112881Z             },
2026-06-23T10:05:47.1113031Z             {
2026-06-23T10:05:47.1113231Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1113468Z               "line": 461
2026-06-23T10:05:47.1113639Z             },
2026-06-23T10:05:47.1113793Z             {
2026-06-23T10:05:47.1113987Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1114226Z               "line": 583
2026-06-23T10:05:47.1114398Z             },
2026-06-23T10:05:47.1114560Z             {
2026-06-23T10:05:47.1114752Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T10:05:47.1114993Z               "line": 171
2026-06-23T10:05:47.1115170Z             },
2026-06-23T10:05:47.1115333Z             {
2026-06-23T10:05:47.1115669Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-23T10:05:47.1115910Z               "line": 65
2026-06-23T10:05:47.1116102Z             },
2026-06-23T10:05:47.1116262Z             {
2026-06-23T10:05:47.1116454Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-23T10:05:47.1116698Z               "line": 71
2026-06-23T10:05:47.1116878Z             },
2026-06-23T10:05:47.1117036Z             {
2026-06-23T10:05:47.1117216Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-23T10:05:47.1117451Z               "line": 77
2026-06-23T10:05:47.1117647Z             },
2026-06-23T10:05:47.1117895Z             {
2026-06-23T10:05:47.1118075Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:47.1118310Z               "line": 870
2026-06-23T10:05:47.1118479Z             },
2026-06-23T10:05:47.1118647Z             {
2026-06-23T10:05:47.1118822Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:47.1119142Z               "line": 887
2026-06-23T10:05:47.1119338Z             },
2026-06-23T10:05:47.1119514Z             {
2026-06-23T10:05:47.1119691Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:47.1119925Z               "line": 930
2026-06-23T10:05:47.1120100Z             },
2026-06-23T10:05:47.1120259Z             {
2026-06-23T10:05:47.1120430Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:47.1120648Z               "line": 1073
2026-06-23T10:05:47.1120829Z             },
2026-06-23T10:05:47.1120993Z             {
2026-06-23T10:05:47.1121180Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:47.1121418Z               "line": 1223
2026-06-23T10:05:47.1121604Z             }
2026-06-23T10:05:47.1121767Z           ]
2026-06-23T10:05:47.1121929Z         },
2026-06-23T10:05:47.1122091Z         "int": {
2026-06-23T10:05:47.1122272Z           "complete": true,
2026-06-23T10:05:47.1122478Z           "evidence": [
2026-06-23T10:05:47.1122662Z             {
2026-06-23T10:05:47.1122867Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-23T10:05:47.1123126Z               "line": 569
2026-06-23T10:05:47.1123302Z             },
2026-06-23T10:05:47.1123460Z             {
2026-06-23T10:05:47.1123643Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-23T10:05:47.1123894Z               "line": 135
2026-06-23T10:05:47.1124071Z             }
2026-06-23T10:05:47.1124237Z           ]
2026-06-23T10:05:47.1124391Z         },
2026-06-23T10:05:47.1124552Z         "unit": {
2026-06-23T10:05:47.1124720Z           "complete": true,
2026-06-23T10:05:47.1124914Z           "evidence": [
2026-06-23T10:05:47.1125091Z             {
2026-06-23T10:05:47.1125287Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T10:05:47.1125535Z               "line": 628
2026-06-23T10:05:47.1125720Z             },
2026-06-23T10:05:47.1125888Z             {
2026-06-23T10:05:47.1126073Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T10:05:47.1126315Z               "line": 677
2026-06-23T10:05:47.1126503Z             },
2026-06-23T10:05:47.1126662Z             {
2026-06-23T10:05:47.1126857Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T10:05:47.1127104Z               "line": 696
2026-06-23T10:05:47.1127291Z             },
2026-06-23T10:05:47.1127457Z             {
2026-06-23T10:05:47.1127658Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1127897Z               "line": 513
2026-06-23T10:05:47.1128073Z             },
2026-06-23T10:05:47.1128235Z             {
2026-06-23T10:05:47.1128430Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1128668Z               "line": 638
2026-06-23T10:05:47.1128856Z             },
2026-06-23T10:05:47.1129106Z             {
2026-06-23T10:05:47.1129292Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1129527Z               "line": 675
2026-06-23T10:05:47.1129711Z             },
2026-06-23T10:05:47.1129879Z             {
2026-06-23T10:05:47.1130256Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1130499Z               "line": 957
2026-06-23T10:05:47.1130680Z             },
2026-06-23T10:05:47.1130847Z             {
2026-06-23T10:05:47.1131043Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1131284Z               "line": 979
2026-06-23T10:05:47.1131465Z             },
2026-06-23T10:05:47.1131630Z             {
2026-06-23T10:05:47.1131817Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1132050Z               "line": 996
2026-06-23T10:05:47.1132230Z             },
2026-06-23T10:05:47.1132503Z             {
2026-06-23T10:05:47.1132689Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1132923Z               "line": 1011
2026-06-23T10:05:47.1133103Z             },
2026-06-23T10:05:47.1133266Z             {
2026-06-23T10:05:47.1133461Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1133700Z               "line": 1037
2026-06-23T10:05:47.1133881Z             },
2026-06-23T10:05:47.1134048Z             {
2026-06-23T10:05:47.1134257Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T10:05:47.1134507Z               "line": 457
2026-06-23T10:05:47.1134694Z             },
2026-06-23T10:05:47.1134849Z             {
2026-06-23T10:05:47.1135056Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-23T10:05:47.1135308Z               "line": 338
2026-06-23T10:05:47.1135475Z             },
2026-06-23T10:05:47.1135641Z             {
2026-06-23T10:05:47.1135828Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1136056Z               "line": 12087
2026-06-23T10:05:47.1136248Z             },
2026-06-23T10:05:47.1136409Z             {
2026-06-23T10:05:47.1136596Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:47.1136828Z               "line": 1352
2026-06-23T10:05:47.1137007Z             },
2026-06-23T10:05:47.1137164Z             {
2026-06-23T10:05:47.1137369Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-23T10:05:47.1137617Z               "line": 130
2026-06-23T10:05:47.1137799Z             }
2026-06-23T10:05:47.1137960Z           ]
2026-06-23T10:05:47.1138124Z         }
2026-06-23T10:05:47.1138280Z       }
2026-06-23T10:05:47.1138429Z     },
2026-06-23T10:05:47.1138595Z     {
2026-06-23T10:05:47.1138758Z       "id": "REQ-UPD-7",
2026-06-23T10:05:47.1141064Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-23T10:05:47.1142867Z       "requiredStages": [
2026-06-23T10:05:47.1143067Z         "impl",
2026-06-23T10:05:47.1143240Z         "unit"
2026-06-23T10:05:47.1143402Z       ],
2026-06-23T10:05:47.1143569Z       "stages": {
2026-06-23T10:05:47.1143735Z         "doc": {
2026-06-23T10:05:47.1143927Z           "complete": false,
2026-06-23T10:05:47.1144127Z           "evidence": []
2026-06-23T10:05:47.1144321Z         },
2026-06-23T10:05:47.1144480Z         "impl": {
2026-06-23T10:05:47.1144664Z           "complete": true,
2026-06-23T10:05:47.1144859Z           "evidence": [
2026-06-23T10:05:47.1145043Z             {
2026-06-23T10:05:47.1145239Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1145483Z               "line": 3276
2026-06-23T10:05:47.1145681Z             }
2026-06-23T10:05:47.1145850Z           ]
2026-06-23T10:05:47.1146015Z         },
2026-06-23T10:05:47.1146179Z         "int": {
2026-06-23T10:05:47.1146460Z           "complete": false,
2026-06-23T10:05:47.1146645Z           "evidence": []
2026-06-23T10:05:47.1146832Z         },
2026-06-23T10:05:47.1146994Z         "unit": {
2026-06-23T10:05:47.1147170Z           "complete": true,
2026-06-23T10:05:47.1147369Z           "evidence": [
2026-06-23T10:05:47.1147548Z             {
2026-06-23T10:05:47.1147734Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1147967Z               "line": 12063
2026-06-23T10:05:47.1148154Z             }
2026-06-23T10:05:47.1148311Z           ]
2026-06-23T10:05:47.1148474Z         }
2026-06-23T10:05:47.1148759Z       }
2026-06-23T10:05:47.1148916Z     },
2026-06-23T10:05:47.1149169Z     {
2026-06-23T10:05:47.1149332Z       "id": "REQ-UPD-8",
2026-06-23T10:05:47.1151873Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-23T10:05:47.1154086Z       "requiredStages": [
2026-06-23T10:05:47.1154281Z         "impl",
2026-06-23T10:05:47.1154449Z         "unit"
2026-06-23T10:05:47.1154610Z       ],
2026-06-23T10:05:47.1154764Z       "stages": {
2026-06-23T10:05:47.1154935Z         "doc": {
2026-06-23T10:05:47.1155112Z           "complete": false,
2026-06-23T10:05:47.1155314Z           "evidence": []
2026-06-23T10:05:47.1155504Z         },
2026-06-23T10:05:47.1155675Z         "impl": {
2026-06-23T10:05:47.1155856Z           "complete": true,
2026-06-23T10:05:47.1156052Z           "evidence": [
2026-06-23T10:05:47.1156227Z             {
2026-06-23T10:05:47.1156414Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T10:05:47.1156677Z               "line": 77
2026-06-23T10:05:47.1156867Z             },
2026-06-23T10:05:47.1157025Z             {
2026-06-23T10:05:47.1157229Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1157477Z               "line": 49
2026-06-23T10:05:47.1157660Z             },
2026-06-23T10:05:47.1157824Z             {
2026-06-23T10:05:47.1158029Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1158284Z               "line": 152
2026-06-23T10:05:47.1158475Z             },
2026-06-23T10:05:47.1158648Z             {
2026-06-23T10:05:47.1158847Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1159166Z               "line": 215
2026-06-23T10:05:47.1159352Z             },
2026-06-23T10:05:47.1159510Z             {
2026-06-23T10:05:47.1159706Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1159944Z               "line": 230
2026-06-23T10:05:47.1160130Z             },
2026-06-23T10:05:47.1160287Z             {
2026-06-23T10:05:47.1160475Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1160725Z               "line": 247
2026-06-23T10:05:47.1160907Z             },
2026-06-23T10:05:47.1161063Z             {
2026-06-23T10:05:47.1161260Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1161508Z               "line": 269
2026-06-23T10:05:47.1161688Z             },
2026-06-23T10:05:47.1161864Z             {
2026-06-23T10:05:47.1162050Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1162298Z               "line": 66
2026-06-23T10:05:47.1162485Z             },
2026-06-23T10:05:47.1162758Z             {
2026-06-23T10:05:47.1162955Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1163206Z               "line": 154
2026-06-23T10:05:47.1163387Z             },
2026-06-23T10:05:47.1163549Z             {
2026-06-23T10:05:47.1163736Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1163968Z               "line": 2784
2026-06-23T10:05:47.1164159Z             },
2026-06-23T10:05:47.1164332Z             {
2026-06-23T10:05:47.1164517Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1164750Z               "line": 2847
2026-06-23T10:05:47.1165047Z             },
2026-06-23T10:05:47.1165222Z             {
2026-06-23T10:05:47.1165399Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1165630Z               "line": 2857
2026-06-23T10:05:47.1165818Z             },
2026-06-23T10:05:47.1165975Z             {
2026-06-23T10:05:47.1166163Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1166397Z               "line": 2864
2026-06-23T10:05:47.1166589Z             },
2026-06-23T10:05:47.1166759Z             {
2026-06-23T10:05:47.1166936Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1167165Z               "line": 3277
2026-06-23T10:05:47.1167355Z             },
2026-06-23T10:05:47.1167518Z             {
2026-06-23T10:05:47.1167698Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:47.1167929Z               "line": 572
2026-06-23T10:05:47.1168114Z             },
2026-06-23T10:05:47.1168276Z             {
2026-06-23T10:05:47.1168460Z               "path": "crates/xtask/src/main.rs",
2026-06-23T10:05:47.1168687Z               "line": 586
2026-06-23T10:05:47.1168869Z             }
2026-06-23T10:05:47.1169111Z           ]
2026-06-23T10:05:47.1169284Z         },
2026-06-23T10:05:47.1169456Z         "int": {
2026-06-23T10:05:47.1169636Z           "complete": false,
2026-06-23T10:05:47.1169842Z           "evidence": []
2026-06-23T10:05:47.1170027Z         },
2026-06-23T10:05:47.1170204Z         "unit": {
2026-06-23T10:05:47.1170380Z           "complete": true,
2026-06-23T10:05:47.1170580Z           "evidence": [
2026-06-23T10:05:47.1170763Z             {
2026-06-23T10:05:47.1170971Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T10:05:47.1171227Z               "line": 476
2026-06-23T10:05:47.1171414Z             },
2026-06-23T10:05:47.1171575Z             {
2026-06-23T10:05:47.1171776Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T10:05:47.1172020Z               "line": 580
2026-06-23T10:05:47.1172209Z             },
2026-06-23T10:05:47.1172383Z             {
2026-06-23T10:05:47.1172557Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1172791Z               "line": 12065
2026-06-23T10:05:47.1172983Z             },
2026-06-23T10:05:47.1173149Z             {
2026-06-23T10:05:47.1173332Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1173567Z               "line": 12087
2026-06-23T10:05:47.1173761Z             }
2026-06-23T10:05:47.1173923Z           ]
2026-06-23T10:05:47.1174090Z         }
2026-06-23T10:05:47.1174243Z       }
2026-06-23T10:05:47.1174400Z     },
2026-06-23T10:05:47.1174567Z     {
2026-06-23T10:05:47.1174734Z       "id": "REQ-UPD-9",
2026-06-23T10:05:47.1177353Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-23T10:05:47.1180016Z       "requiredStages": [
2026-06-23T10:05:47.1180287Z         "doc",
2026-06-23T10:05:47.1180463Z         "impl",
2026-06-23T10:05:47.1180635Z         "unit"
2026-06-23T10:05:47.1180812Z       ],
2026-06-23T10:05:47.1181003Z       "stages": {
2026-06-23T10:05:47.1181193Z         "doc": {
2026-06-23T10:05:47.1181407Z           "complete": true,
2026-06-23T10:05:47.1181604Z           "evidence": [
2026-06-23T10:05:47.1181774Z             {
2026-06-23T10:05:47.1182089Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.1182309Z               "line": 93
2026-06-23T10:05:47.1182503Z             },
2026-06-23T10:05:47.1182670Z             {
2026-06-23T10:05:47.1182842Z               "path": "docs/MANIFEST.md",
2026-06-23T10:05:47.1183066Z               "line": 301
2026-06-23T10:05:47.1183248Z             }
2026-06-23T10:05:47.1183400Z           ]
2026-06-23T10:05:47.1183558Z         },
2026-06-23T10:05:47.1183714Z         "impl": {
2026-06-23T10:05:47.1183892Z           "complete": true,
2026-06-23T10:05:47.1184090Z           "evidence": [
2026-06-23T10:05:47.1184284Z             {
2026-06-23T10:05:47.1184498Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T10:05:47.1184759Z               "line": 128
2026-06-23T10:05:47.1184942Z             },
2026-06-23T10:05:47.1185118Z             {
2026-06-23T10:05:47.1185317Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1185590Z               "line": 543
2026-06-23T10:05:47.1185791Z             },
2026-06-23T10:05:47.1185980Z             {
2026-06-23T10:05:47.1186186Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.1186286Z               "line": 459
2026-06-23T10:05:47.1186367Z             },
2026-06-23T10:05:47.1192710Z             {
2026-06-23T10:05:47.1192897Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.1193011Z               "line": 552
2026-06-23T10:05:47.1193096Z             },
2026-06-23T10:05:47.1193178Z             {
2026-06-23T10:05:47.1193311Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.1193397Z               "line": 975
2026-06-23T10:05:47.1193483Z             },
2026-06-23T10:05:47.1193569Z             {
2026-06-23T10:05:47.1193692Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T10:05:47.1193780Z               "line": 302
2026-06-23T10:05:47.1193865Z             },
2026-06-23T10:05:47.1193951Z             {
2026-06-23T10:05:47.1194065Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1194156Z               "line": 6361
2026-06-23T10:05:47.1194245Z             },
2026-06-23T10:05:47.1194326Z             {
2026-06-23T10:05:47.1194438Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1194527Z               "line": 6496
2026-06-23T10:05:47.1194617Z             },
2026-06-23T10:05:47.1194692Z             {
2026-06-23T10:05:47.1194803Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1194901Z               "line": 6670
2026-06-23T10:05:47.1194972Z             },
2026-06-23T10:05:47.1195058Z             {
2026-06-23T10:05:47.1195164Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1195248Z               "line": 6708
2026-06-23T10:05:47.1195334Z             },
2026-06-23T10:05:47.1195421Z             {
2026-06-23T10:05:47.1195530Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1195615Z               "line": 6731
2026-06-23T10:05:47.1195697Z             },
2026-06-23T10:05:47.1195802Z             {
2026-06-23T10:05:47.1195939Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1196036Z               "line": 6757
2026-06-23T10:05:47.1196116Z             }
2026-06-23T10:05:47.1196207Z           ]
2026-06-23T10:05:47.1196292Z         },
2026-06-23T10:05:47.1196389Z         "int": {
2026-06-23T10:05:47.1196484Z           "complete": false,
2026-06-23T10:05:47.1196732Z           "evidence": []
2026-06-23T10:05:47.1196822Z         },
2026-06-23T10:05:47.1196908Z         "unit": {
2026-06-23T10:05:47.1197005Z           "complete": true,
2026-06-23T10:05:47.1197089Z           "evidence": [
2026-06-23T10:05:47.1197175Z             {
2026-06-23T10:05:47.1197314Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T10:05:47.1197404Z               "line": 265
2026-06-23T10:05:47.1197489Z             },
2026-06-23T10:05:47.1197574Z             {
2026-06-23T10:05:47.1197698Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T10:05:47.1197891Z               "line": 667
2026-06-23T10:05:47.1197978Z             },
2026-06-23T10:05:47.1198059Z             {
2026-06-23T10:05:47.1198182Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T10:05:47.1198269Z               "line": 1154
2026-06-23T10:05:47.1198349Z             },
2026-06-23T10:05:47.1198430Z             {
2026-06-23T10:05:47.1198540Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1198641Z               "line": 8942
2026-06-23T10:05:47.1198717Z             }
2026-06-23T10:05:47.1198797Z           ]
2026-06-23T10:05:47.1198879Z         }
2026-06-23T10:05:47.1199036Z       }
2026-06-23T10:05:47.1199126Z     },
2026-06-23T10:05:47.1199208Z     {
2026-06-23T10:05:47.1199331Z       "id": "REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT",
2026-06-23T10:05:47.1204558Z       "title": "A `rc --view` VIEWER that overflows its broker subscription queue and is EVICTED (OutputLog::append try_send Full → viewers.remove, REQ-HAZARD-VIEWER-ISOLATION session-protection) must SKIP TO LIVE, not die silently. ROOT (v0.13.0, b4 JIT item 2 = p0_paste + post-b4 a_journaled-Linux, ONE root): serve_attach forwards each frame (read_event→b64decode→re-encode AttachRecord→net_stream_send) SLOWER than the drain fans out under flood → its VIEWER_CHANNEL_DEPTH(256) channel overflows → the drain evicts (viewers.remove drops the ViewerSink → drops tx → viewer_writer's rx.recv() Err → the writer returns WRITING NOTHING) → serve_attach's brain.read_event() just STOPS getting Output (no EOF, no error) → serve_attach blocks forever → the operator receives nothing (attach_received_output=FALSE). Eviction-of-a-hopelessly-behind-viewer is CORRECT session-protection (keep it); SILENT+PERMANENT eviction is the bug. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative / exposes no resume cursor). FIX (doyle-gated, skip-to-live = tail -f reconnect): (1) explicit broker→viewer EVICTION SIGNAL (KIND_VIEWER_EVICTED, written in the viewer_writer thread OFF the log lock, DISTINCT from session-exit EOF so serve must NOT tear down on it); (2) serve_attach re-subscribes from the CURRENT ring floor (skip-to-live, replays nothing, sees the next live burst) — resetting the cold serve-brain's next_seq so the post-eviction forward-jump replay is accepted (the legacy reject-gap path, brain.rs:618-626, would otherwise FATAL the forward jump); (3) HARD constraint NO evict→resubscribe busy-loop: serve_attach rate-limits re-subscribes (RESUBSCRIBE_INTERVAL) so under max-flood the operator sees intermittent LIVE bursts, never a CPU spin. (v0.13.0)",
2026-06-23T10:05:47.1204829Z       "requiredStages": [
2026-06-23T10:05:47.1204916Z         "doc",
2026-06-23T10:05:47.1204998Z         "impl",
2026-06-23T10:05:47.1205087Z         "unit",
2026-06-23T10:05:47.1205181Z         "int"
2026-06-23T10:05:47.1205262Z       ],
2026-06-23T10:05:47.1205353Z       "stages": {
2026-06-23T10:05:47.1205428Z         "doc": {
2026-06-23T10:05:47.1205522Z           "complete": true,
2026-06-23T10:05:47.1205957Z           "evidence": [
2026-06-23T10:05:47.1206047Z             {
2026-06-23T10:05:47.1206156Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.1206248Z               "line": 355
2026-06-23T10:05:47.1206339Z             }
2026-06-23T10:05:47.1206424Z           ]
2026-06-23T10:05:47.1206509Z         },
2026-06-23T10:05:47.1206591Z         "impl": {
2026-06-23T10:05:47.1206686Z           "complete": true,
2026-06-23T10:05:47.1206781Z           "evidence": [
2026-06-23T10:05:47.1206862Z             {
2026-06-23T10:05:47.1206996Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T10:05:47.1207087Z               "line": 432
2026-06-23T10:05:47.1207177Z             },
2026-06-23T10:05:47.1207259Z             {
2026-06-23T10:05:47.1207377Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:47.1207463Z               "line": 683
2026-06-23T10:05:47.1207550Z             },
2026-06-23T10:05:47.1207635Z             {
2026-06-23T10:05:47.1207749Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:47.1207846Z               "line": 859
2026-06-23T10:05:47.1207927Z             },
2026-06-23T10:05:47.1208011Z             {
2026-06-23T10:05:47.1208120Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:47.1208206Z               "line": 701
2026-06-23T10:05:47.1208291Z             },
2026-06-23T10:05:47.1208375Z             {
2026-06-23T10:05:47.1208495Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:47.1208581Z               "line": 824
2026-06-23T10:05:47.1208666Z             }
2026-06-23T10:05:47.1208757Z           ]
2026-06-23T10:05:47.1208839Z         },
2026-06-23T10:05:47.1208919Z         "int": {
2026-06-23T10:05:47.1209085Z           "complete": true,
2026-06-23T10:05:47.1209173Z           "evidence": [
2026-06-23T10:05:47.1209253Z             {
2026-06-23T10:05:47.1209410Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T10:05:47.1209502Z               "line": 2167
2026-06-23T10:05:47.1209586Z             }
2026-06-23T10:05:47.1209672Z           ]
2026-06-23T10:05:47.1209759Z         },
2026-06-23T10:05:47.1209845Z         "unit": {
2026-06-23T10:05:47.1209934Z           "complete": true,
2026-06-23T10:05:47.1210021Z           "evidence": [
2026-06-23T10:05:47.1210107Z             {
2026-06-23T10:05:47.1210225Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:47.1210316Z               "line": 1476
2026-06-23T10:05:47.1210403Z             },
2026-06-23T10:05:47.1210484Z             {
2026-06-23T10:05:47.1210587Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T10:05:47.1210677Z               "line": 1633
2026-06-23T10:05:47.1210763Z             },
2026-06-23T10:05:47.1210848Z             {
2026-06-23T10:05:47.1210971Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:47.1211056Z               "line": 2530
2026-06-23T10:05:47.1211143Z             },
2026-06-23T10:05:47.1211233Z             {
2026-06-23T10:05:47.1211357Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T10:05:47.1211458Z               "line": 2597
2026-06-23T10:05:47.1211543Z             },
2026-06-23T10:05:47.1211628Z             {
2026-06-23T10:05:47.1211744Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T10:05:47.1211844Z               "line": 1038
2026-06-23T10:05:47.1212016Z             }
2026-06-23T10:05:47.1212101Z           ]
2026-06-23T10:05:47.1212187Z         }
2026-06-23T10:05:47.1212267Z       }
2026-06-23T10:05:47.1212355Z     },
2026-06-23T10:05:47.1212439Z     {
2026-06-23T10:05:47.1212539Z       "id": "REQ-WHOAMI-1",
2026-06-23T10:05:47.1214178Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-23T10:05:47.1214384Z       "requiredStages": [
2026-06-23T10:05:47.1214469Z         "doc",
2026-06-23T10:05:47.1214560Z         "impl",
2026-06-23T10:05:47.1214646Z         "unit"
2026-06-23T10:05:47.1214737Z       ],
2026-06-23T10:05:47.1214822Z       "stages": {
2026-06-23T10:05:47.1214909Z         "doc": {
2026-06-23T10:05:47.1214999Z           "complete": true,
2026-06-23T10:05:47.1215085Z           "evidence": [
2026-06-23T10:05:47.1215161Z             {
2026-06-23T10:05:47.1215257Z               "path": "CONTEXT.md",
2026-06-23T10:05:47.1215347Z               "line": 728
2026-06-23T10:05:47.1215428Z             }
2026-06-23T10:05:47.1215514Z           ]
2026-06-23T10:05:47.1215596Z         },
2026-06-23T10:05:47.1215685Z         "impl": {
2026-06-23T10:05:47.1215780Z           "complete": true,
2026-06-23T10:05:47.1215871Z           "evidence": [
2026-06-23T10:05:47.1215955Z             {
2026-06-23T10:05:47.1216068Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1216164Z               "line": 3845
2026-06-23T10:05:47.1216251Z             },
2026-06-23T10:05:47.1216336Z             {
2026-06-23T10:05:47.1216445Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1216536Z               "line": 3873
2026-06-23T10:05:47.1216631Z             }
2026-06-23T10:05:47.1216712Z           ]
2026-06-23T10:05:47.1216798Z         },
2026-06-23T10:05:47.1216885Z         "int": {
2026-06-23T10:05:47.1216988Z           "complete": false,
2026-06-23T10:05:47.1217079Z           "evidence": []
2026-06-23T10:05:47.1217166Z         },
2026-06-23T10:05:47.1217256Z         "unit": {
2026-06-23T10:05:47.1217346Z           "complete": true,
2026-06-23T10:05:47.1217437Z           "evidence": [
2026-06-23T10:05:47.1217509Z             {
2026-06-23T10:05:47.1217618Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1217718Z               "line": 9224
2026-06-23T10:05:47.1217805Z             },
2026-06-23T10:05:47.1217890Z             {
2026-06-23T10:05:47.1217990Z               "path": "crates/spt/src/cli.rs",
2026-06-23T10:05:47.1218082Z               "line": 9277
2026-06-23T10:05:47.1218167Z             }
2026-06-23T10:05:47.1218252Z           ]
2026-06-23T10:05:47.1218333Z         }
2026-06-23T10:05:47.1218425Z       }
2026-06-23T10:05:47.1218510Z     }
2026-06-23T10:05:47.1218594Z   ],
2026-06-23T10:05:47.1218680Z   "findings": []
2026-06-23T10:05:47.1218752Z }
